Django my_demo site(1) 用户认证系统

    @noneface  20 Oct 2015


django提供了一个十分完善的auth/用户认证系统,但每个网站的需求千变万化,所以,可以对auth用户认证系统稍稍修改,来满足我们的需求。

register 用户注册模块

比如说用户注册,django提供了一个UserCreationForm表单。但表单在被使用到时,只会要求用户输入:账号,密码,确认密码。通常来说,网站都会要求注册用户输入邮箱或者手机号等信息。又因为在django的user模块里,储存在数据库中的字段里,已经包含了email。所以只要稍加修改,就能在注册表单里面加上邮箱。

在创建的myauth的application下,建一个forms.py文件。 重写一下UserCreationForm。

from django.contrib.auth.models import User  #引入user模块
from django.contrib.auth.forms import UserCreationForm  #引入UserCreationForm模块
class UserCreationForm(UserCreationForm):   #类似与把UserCreationForm模块载入重新编写一下
	class Meta:
		model = User
		fields = ('username','email')  #UserCreationForm类里面fields里面默认只有username,加上email就可以在表单中显示email

这样在用户注册的时候,就会要求用户同时输入email。

原生的django-UserCreationForm这个表单看起来很简陋,剩下的就是前端设计上的问题了,可以使用bootstrap框架进行设计。

表单有了,接下来就是MVC的开发了。 views.py作如下编辑

from django.contrib.auth.models import User  # 用户认证模块,用于把新建用户存入数据库
from myauth.form import UserCreationForm  #引入重写的用户注册表单
def register(request):   #定义一个register方法
    if request.method == 'POST':  #  如果用户发送来的是post请求
        form = UserCreationForm(request.POST)    
        if form.is_valid():
            user = form.save()    
        else:
            return render(request,"myauth/register.html",{
              'form':form
               })   
    else:   #  如果是get请求
        form = UserCreationForm()
        return render(request,"myauth/register.html",{
              'form':form
               })

然后就是前端的编辑。在myauth的application下建立templates/myauth文件夹。 新建一个register.html文件

 <h1>register</h1>
  <form action="" method="post">
  	{ % csrf_token % }
	{ {form.as_p } }
      <input type="submit" value="submit">
  </form>

最后就是编辑url文件。 在application的urls.py作如下添加如下路径 url(r’^register$’, views.register, name=’register’) 然后就是在项目的urls.py文件添加如下 url(r’^’, include(‘myauth.urls’))

最后就能实现用户注册的功能。


Follow your heart  |   nonefacesay@gmail.com