在前两节中,完成了论坛模型层的创建和表单 forms 的创建。
在模型层中用到的字段类型,有整型,字符串型,时间型还有就是外键关联。
① 在论坛注册中,需要创建注册函数;
Django 自带了登录和注销的视图类。
from django.shortcuts import render
from .forms import SignUpFor
在 signup 函数中,先是判断是 POST 请求还是 GET 请求。因为登录是需要传递数据,所以为 POST 请求,接下来就是实例化注册的验证表单 SignUpForm(),将 request.POST 写入,是为了将前端传来的数据转成 form 表单。
经过 form.is_valid() 的字段验证,完成 form 表单中所填字段是否为注册表单SignUpForm() 对应字段的类型和字段要求。如果验证通过,就会调用 auth_login() 登录,然后再重定向到论坛主页。
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
auth_login(request, user)
return redirect('users:home')
else:
form = SignUpForm()
return render(request, 'board/accounts/signup.html', {"form": form})
② 注册的表单验证 SignUpForm()
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class SignUpForm(UserCreationForm):
email = forms.CharField(max_length=254, required=True, widget=forms.EmailInput())
class Meta:
model = User
fields = ('username', 'email', 'password1', 'password2')
③ 添加注册的路由
可以在项目的主文件目录的 urls.py 文件中,添加注册路由。
需要注意的是 signup 函数的导入文件路径。
from . import views
urlpatterns = [
path('signup/', views.signup, name="signup"),
]
④ 注册的页面模板
在 signup 函数中,有返回 页面。
return render(request, 'board/accounts/signup.html', {"form": form})
signup.html
form.html
父模板 base_accounts.html