Изменить функцию на представление класса django - PullRequest
0 голосов
/ 13 апреля 2020

Я создаю приложение django, и сначала я создал методы для своего представления, но теперь я бы хотел перейти на класс.

Вот пример того, как я пытался:

def register(response):
if response.method == "POST":
    form = RegisterForm(response.POST)
    if form.is_valid():
        form.save()
        return redirect("/login")
else:
    form = RegisterForm()

return render(response, "register/register.html", {"form":form})

И попытался изменить следующим образом:

class RegisterView(generic.View):
    def post(self, request):
        form = RegisterForm(response.POST)
        if form.is_valid():
            form.save()
            return redirect("/login")
        else:
            form = RegisterForm()
        return render(response, "register/register.html", {"form":form})

Но я продолжаю получать метод ошибок 405 не допускается, я полагаю, это потому, что я неправильно делаю переход от метода к учебный класс. Есть идеи?

1 Ответ

2 голосов
/ 13 апреля 2020

Вам также нужно определить метод get. Ниже приведен код, который должен выполнять работу

class RegisterView(generic.View):
    def post(self, request):
        form = RegisterForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect("/login")
        else:
            form = RegisterForm()
        return render(request, "register/register.html", {"form":form})

    def get(self, request):
        form = RegisterForm()
        return render(request, "register/register.html", {"form":form})
...