Почему я получаю "return" за пределами функции "в этом Django View? - PullRequest
0 голосов
/ 21 мая 2019

Этот код выдает ошибку «возврат за пределы функции».Все другие представления в этом файле (views.py) являются представлениями на основе классов (createview и т. Д.), Но это представление (то, которое я написал с нуля) выдает ошибку?

class Submit(request):

    if request.method == "POST":
        submit_form = SubmitItemForm(data=request.POST)
        set_form = SubmitSetForm()

        if submit_form.is_valid():
            item = submit_form.save()
            item.save()

        elif set_form.is_valid():
            set = set_form.save()
            set.save()

    else:
        print(set_form.errors)

    submit_form = SubmitItemForm()
    set_form = SubmitSetForm()

    return render(request, 'curate/item_form.html',
                            {'submit_form':submit_form,
                             'set_form': set_form })

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Это не так, как django базовый вид класса работает.

попытаться сделать чистый базовый вид функции или базовый вид класса

def Submit(request):

    if request.method == "POST":
        submit_form = SubmitItemForm(data=request.POST)
        set_form = SubmitSetForm()

        if submit_form.is_valid():
            item = submit_form.save()
            item.save()

        elif set_form.is_valid():
            set = set_form.save()
            set.save()

    else:
        print(set_form.errors)

    submit_form = SubmitItemForm()
    set_form = SubmitSetForm()

    return render(request, 'curate/item_form.html',
                            {'submit_form':submit_form,
                             'set_form': set_form })

и укажите это для CBV

0 голосов
/ 22 мая 2019

Короткий ответ: вы используете класс вместо функции.Так как могут возвращаться только функции, это не работает.Если вы действительно хотите использовать его в классе, вы можете сделать что-то вроде этого:

class Submit_in_a_class:
    def class_submit(request):
        if request.method == "POST":
            submit_form = SubmitItemForm(data=request.POST)
            set_form = SubmitSetForm()

            if submit_form.is_valid():
                item = submit_form.save()
                item.save()

            elif set_form.is_valid():
                set = set_form.save()
                set.save()

        else:
            print(set_form.errors)

        submit_form = SubmitItemForm()
        set_form = SubmitSetForm()

        return render(request, 'curate/item_form.html',
                                {'submit_form':submit_form,
                                 'set_form': set_form })
def Submit(request):
    Submit_in_a_class.class_submit(request)

Однако лучше всего сделать это:

def Submit(request):

    if request.method == "POST":
        submit_form = SubmitItemForm(data=request.POST)
        set_form = SubmitSetForm()

        if submit_form.is_valid():
            item = submit_form.save()
            item.save()

        elif set_form.is_valid():
            set = set_form.save()
            set.save()

    else:
        print(set_form.errors)

    submit_form = SubmitItemForm()
    set_form = SubmitSetForm()

    return render(request, 'curate/item_form.html',
                            {'submit_form':submit_form,
                             'set_form': set_form })

Приветствия!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...