ValueError: Не возвращает объект HttpResponse. Вместо этого он вернулся

Вот реализация для тех, кто может захотеть что-то более общее, которое будет работать с любым количеством полей.

Array.prototype.sortBy = function (propertyName, sortDirection) {

    var sortArguments = arguments;
    this.sort(function (objA, objB) {

        var result = 0;
        for (var argIndex = 0; argIndex < sortArguments.length && result === 0; argIndex += 2) {

            var propertyName = sortArguments[argIndex];
            result = (objA[propertyName] < objB[propertyName]) ? -1 : (objA[propertyName] > objB[propertyName]) ? 1 : 0;

            //Reverse if sort order is false (DESC)
            result *= !sortArguments[argIndex + 1] ? 1 : -1;
        }
        return result;
    });

}

В принципе, вы можете указать любое количество свойств / направление сортировки:

var arr = [{
  LastName: "Doe",
  FirstName: "John",
  Age: 28
}, {
  LastName: "Doe",
  FirstName: "Jane",
  Age: 28
}, {
  LastName: "Foo",
  FirstName: "John",
  Age: 30
}];

arr.sortBy("LastName", true, "FirstName", true, "Age", false);
//Will return Jane Doe / John Doe / John Foo

arr.sortBy("Age", false, "LastName", true, "FirstName", false);
//Will return John Foo / John Doe / Jane Doe
0
задан Georgy 18 January 2019 в 09:37
поделиться

2 ответа

Ваш отступ неверен в нескольких местах. Вам нужно создать пустую форму, если запрос не POST; и вам нужно вернуться при любых обстоятельствах. Итак:

def post_edit(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST":
        form = PostForm(request.POST, request.FILES, instance=post)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()
            post.save()
            return redirect('post_detail', pk=post.pk)
     else:
        form = PostForm(instance=post)
     return render(request, 'blog/post_edit.html', {'form':form})

Обратите внимание, как else совпадает с первым if, и отдача находится вне их обоих.

0
ответ дан Daniel Roseman 18 January 2019 в 09:37
поделиться

Ваш request.method не POST. Просто сделайте:

def post_edit(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST":
        if form.is_valid():
        ....
        else:
        .....
    # return a response in cases when request.method is not POST
    return HttpResponse()
0
ответ дан Martin Stoyanov 18 January 2019 в 09:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: