输入Django注册模板后不会加载表单

时间:2019-12-01 17:06:36

标签: python html django templates

我的Django注册模板有问题。要注册,我使用的是Django-auth系统。从理论上讲,它是可行的,因为每当我进入注册站点时,它都会加载模板,但只显示我的注册按钮。当我单击它时,页面将重新加载并显示表格。我认为这与POST方法有关,但我无法弄清楚重定向后是否立即加载表单。

这是我的views.py:

class RegisterView(TemplateView):
template_name = 'register/register.html'

def post(self, request, *args, **kwargs):
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            form.save()
    else:
        form = RegisterForm()

    return render(request, self.template_name, {'form': form, })

forms.py

class RegisterForm(UserCreationForm):
email = forms.EmailField()

class Meta:
    model = User
    fields = ['username', 'email', 'first_name', 'last_name', 'password1', 'password2']

这是我的register.html模板的图片,以某种方式我无法将其粘贴为代码: the register.html template

1 个答案:

答案 0 :(得分:0)

我认为您遇到的问题是,无论注册成功与否,您都将返回return render(request, self.template_name, {'form': form, })。您在数据库中看到新用户了吗?

无论如何,这是我使用基于类的视图的方式(它为您节省了很多额外的代码)

forms.py

from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm



class CustomUserCreationForm(UserCreationForm):
    class Meta(UserCreationForm):
        model = get_user_model()
        fields = ("email", "username")

views.py

from .forms import CustomUserCreationForm


class SignupPageView(generic.CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy("login") # this refers to a name in urls.py
    template_name = "account/signup.html"

urls.py

urlpatterns = [
    path("/signup", SignupPageView.as_view(), name="signup"),
    path("/login", YourLoginViewHere.as_view(), name="login"),
]

也请查看django-allauth。对于用户auth / login / registration,这是一个非常漂亮的软件包。