Django简单的用户注册
2018年2月7日编写/account/forms.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from django import forms from django.contrib.auth.models import User #引入默认用户模型user类 class LoginForm(forms.Form): username = forms.CharField() password = forms.CharField(widget=forms.PasswordInput) class RegistrationForm(forms.ModelForm): password = forms.CharField(label="password", widget=forms.PasswordInput) password2 = forms.CharField(label="Confirm Password", widget=forms.PasswordInput) class Meta: model = User fields = ("username", "email") def clean_password2(self): cd = self.cleaned_data if cd['password'] != cd['password2']: raise forms.ValidationError('passwords do not match') return cd['password2'] |
编写/account/views.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
from django.shortcuts import render from django.http import HttpResponse from django.contrib.auth import authenticate, login #引入默认的用户应用和用户管理 from .forms import LoginForm, RegistrationForm # Create your views here. def user_login(request): #命名一个视图函数 if request.method=="POST": #判断是否是POST提交 login_form =LoginForm(request.POST) #获取POST提交的数据 if login_form.is_valid(): #验证传入的数据是否合法 cd = login_form.cleaned_data #引用一个字典类型的数据其中记录了账号和密码 user = authenticate(username=cd['username'],password=cd['password']) #验证这个用户是否是否在我们这里注册过 if user: login(request, user) #开始登陆 return HttpResponse("wellcome") else: return HttpResponse("sorry") #登陆失败 else: return HttpResponse("invalid login") if request.method =="GET":#判断是否是GIT提交 login_form = LoginForm() return render(request, "account/login.html", {"form":login_form}) def register(request): if request.method == "POST": user_form = RegistrationForm(request.POST) if user_form.is_valid(): #验证传入的数据是否合法 new_user = user_form.save(commit=False) new_user.set_password(user_form.cleaned_data['password']) new_user.save() return HttpResponse("successfully") else: return HttpResponse("sorry,your can not registere") else: user_form = RegistrationForm() return render(request, "account/register.html",{"form":user_form}) |
编写templates/account/register.html
1 2 3 4 5 6 7 8 9 10 |
{% extends "base.html" %} {% block title %}login{% endblock %} {% block content %} <h1>register</h1> <form action="." method="post"> {% csrf_token %} {{form.as_p}} <input type="submit" value="register"> </form> {% endblock%} |
编写account/urls.py
1 2 3 4 5 6 7 8 9 10 11 12 |
from django.conf.urls import url from . import views from django.conf import settings from django.contrib.auth import views as auth_views # 引入刚才内容的视图文件并重命名为auth_views urlpatterns = [ # 使用自己写的登陆方法 # url(r'^login/$', views.user_login, name="user_login"), url(r'^login/$', auth_views.login, name="user_login"), # 使用django内置的方法 url(r'^logout/$', auth_views.logout, {"template_name": "account/logout.html"}, name="user_logout"), #使用django内置的方法退出传参到自定义模板 url(r'^register/$', views.register, name="user_register"), ] |