Как исправить «SignUpView не хватает набора запросов».

В моем веб-приложении django я пытаюсь создать приложение Newspaper, на главной странице, когда я нажимаю на SIGN UP кнопку, я получаю ошибку «ImproperlyConfigured at /accounts/signup/», Я не смог понять, в чем проблема. forms.py:

from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser

class CustomUserCreationForm(UserCreationForm): #Creation of CustomUser

    class Meta:
        model = CustomUser
        fields = UserCreationForm.Meta.fields + ("age",) 

class CustomUserChangeForm(UserChangeForm): #Modifying existing users

    class Meta:
        model = CustomUser
        fields = UserChangeForm.Meta.fields 

и models.py:

from django.contrib.auth.models import AbstractUser #username, pw1, pw2
from django.db import models

class CustomUser(AbstractUser):
    age = models.PositiveIntegerField(null=True, blank=True)

urls.py:

from django.urls import path
from .views import SignUpView

#Accounts/urls.py : Handles only registrations URLs!!
urlpatterns = [
    path('signup/', SignUpView.as_view(), name='signup'),
]

и views.py:

from django.urls import reverse_lazy
from django.views.generic import CreateView
from .forms import CustomUserCreationForm

class SignUpView(CreateView):
    from_class = CustomUserCreationForm
    success_url = reverse_lazy('login')
    template_name = 'registration/signup.html'

signup.html:

{% extends 'base.html' %}

{% block title %}Sign Up{% endblock title %}

{% block content %}
<h2>Sign Up</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Sign Up</button>
</form>
{% endblock content %}

Я пытался изменить поля в forms.py с помощью:

fields = (
            "username",
            "email",
            "age",)

но упоминать не о чем

Виной всему опечатка: from_class в form_class:

from django.urls import reverse_lazy
from django.views.generic import CreateView

from .forms import CustomUserCreationForm


class SignUpView(CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy('login')
    template_name = 'registration/signup.html'

Но я думаю, что интересно узнать , почему тогда возникает эта ошибка: если вы не предоставите .form_class < sup>[Django-doc] для CreateView, CreateView попытается создать свой собственный форма, для этого она может работать с modelform_factory(…) [Django-doc], но для этого ей нужно знать модель.

Он пытается определить модель тремя возможными способами: сначала проверяется, имеет ли представление атрибут .model, если нет, если у него есть атрибут .object (для UpdateView используется форма может подразумеваться объектом для обновления), и, наконец, он запускает .get_queryset() метод [Django-doc] чтобы получить модель QuerySet, и поскольку ни один из них не работает с этим SignUpView, мы, таким образом, получаем эту ошибку.

Вернуться на верх