django做的简单的注册登录功能

来源:互联网 发布:矩阵A2怎么算 编辑:程序博客网 时间:2024/05/18 00:09

初学python和django,做个简单的注册登录功能,供初学者参考。

首先是创建项目,django-admin.py startproject demo

接着创建应用,因为功能简单,所以只创建一个应用 django-admin startapp blog

说明下,数据库我用的是mysql,在settings.py里配置好相关内容,此处掠过。

 

接着开始代码部分!

首先是urls.py

from django.conf.urls.defaults import patterns, include, url# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()urlpatterns = patterns('',    # Examples:    # url(r'^$', 'First.views.home', name='home'),    # url(r'^First/', include('First.foo.urls')),    # Uncomment the admin/doc line below to enable admin documentation:    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),    # Uncomment the next line to enable the admin:    url(r'^admin/', include(admin.site.urls)),    url(r'^blog/register/$','blog.views.register'),    url(r'^blog/login/$','blog.views.login'),    url(r'^blog/index/$','blog.views.index'),    url(r'^blog/regsuc/$','blog.views.regsuc'),    url(r'^blog/logout/$','blog.views.logout'),    url(r'^blog/changepwd/$','blog.views.changePwd'),)

因为第一次用,所以每一步都配置了相关的url。

接着是models.py,因为只有基本的一些信息,所以比较简单。

from django.db import modelsclass User(models.Model):username = models.CharField(max_length=30,unique=True)password = models.CharField(max_length=30)email = models.EmailField()tel = models.CharField(max_length=15)sex = models.CharField(max_length=10,null=True)name = models.CharField(max_length=15,null=True)age = models.IntegerField(null=True)def __unicode__(self):return self.username

在同步的时候首先要打开mysql服务,命令是service mysqld start

接着执行命令python manage.py syncdb来同步数据库内容

下面是主要的views.py的内容

from django.http import HttpResponse,HttpResponseRedirectfrom django.shortcuts import render_to_responsefrom django import formsfrom blog.models import User
#各个页面需要用到的数据模型class UserForm(forms.Form):username = forms.CharField()password = forms.CharField()email = forms.EmailField()tel = forms.CharField()class LoginForm(forms.Form):username = forms.CharField()password = forms.CharField()class Information(forms.Form):name = forms.CharField()sex = forms.CharField()age = forms.IntegerField()email = forms.EmailField()tel = forms.CharField()class ChangePwd(forms.Form):password = forms.CharField()newpassword = forms.CharField()#登录成功后的主页面def index(req):username = req.session.get('username')#user = User.objects.all()#filter(username__exact = username)#print userif req.method == 'POST':msg = Information(req.POST)if msg.is_valid():name = msg.cleaned_data['name']sex = msg.cleaned_data['sex']age = msg.cleaned_data['age']email = msg.cleaned_data['email']tel = msg.cleaned_data['tel']User.objects.filter(username__exact=username).update(name=name)User.objects.filter(username__exact=username).update(sex=sex)User.objects.filter(username__exact=username).update(age=age)User.objects.filter(username__exact=username).update(email=email)User.objects.filter(username__exact=username).update(tel=tel)return HttpResponseRedirect('/blog/index')else:return HttpResponseRedirect('/blog/index')else:name = User.objects.get(username__exact=username).namesex = User.objects.get(username__exact=username).sexage = User.objects.get(username__exact=username).ageemail = User.objects.get(username__exact=username).emailtel = User.objects.get(username__exact=username).telreturn render_to_response('index.html',{'username':username,'name':name,'sex':sex,'age':age,'email':email,'tel':tel})
#注册def register(req):if req.method == 'POST':uf = UserForm(req.POST)err = 'invalid content,please input again!'if uf.is_valid():username = uf.cleaned_data['username']password = uf.cleaned_data['password']email = uf.cleaned_data['email']tel = uf.cleaned_data['tel']if User.objects.filter(username__exact=username):return render_to_response('register.html',{'uf':uf,'err':err})user = User()user.username = usernameuser.password = passworduser.email = emailuser.tel = teluser.save()req.session['username'] = usernamereturn HttpResponseRedirect('/blog/regsuc')else:return render_to_response('register.html',{'uf':uf,'err':err})else:uf = UserForm()return render_to_response('register.html',{'uf':uf})
#登录及验证def login(req):if req.method == 'POST':uf = LoginForm(req.POST)if uf.is_valid():username = uf.cleaned_data['username']password = uf.cleaned_data['password']user = User.objects.filter(username__exact = username,password__exact = password)if user:req.session['username'] = usernamereturn HttpResponseRedirect('/blog/index')else:err = 'incorrect username or pwd,please input again.'return render_to_response('login.html',{'err':err})else:uf = UserForm()return render_to_response('login.html',{'uf':uf})
#注册成功页面def regsuc(req):username = req.session.get('username')return render_to_response('regsuc.html',{'username':username})
#登出def logout(req):del req.session['username']return HttpResponseRedirect('/blog/login')
#修改密码def changePwd(req):username = req.session.get('username')if req.method == 'POST':cp = ChangePwd(req.POST)if cp.is_valid():#print 'zhixing is valid'password = cp.cleaned_data['password']user = User.objects.filter(username__exact = username,password__exact = password)if user:#print 'zhixing user'newpassword = cp.cleaned_data['newpassword']User.objects.filter(username__exact = username).update(password=newpassword)return HttpResponseRedirect('/blog/index')else:err = 'old password was incorrect,please check.'return render_to_response('changepwd.html',{'err':err,'username':username})else:#print 'zhixing not valid'err = 'invalid content,please input again.'return render_to_response('changepwd.html',{'err':err,'username':username})else:#print 'zhixing not POST'cp = LoginForm()return render_to_response('changepwd.html',{'username':username})

最后就是html文件的前端展示了,因为我前端不熟悉,所以做的很难看,只有简单的html代码。贴在下一篇,有兴趣可以直接拷贝了看效果。