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

初学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 admin
admin.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 models


class 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,HttpResponseRedirect
from django.shortcuts import render_to_response
from django import forms
from 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 user
	if 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).name
		sex = User.objects.get(username__exact=username).sex
		age = User.objects.get(username__exact=username).age
		email = User.objects.get(username__exact=username).email
		tel = User.objects.get(username__exact=username).tel
	return 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 = username
			user.password = password
			user.email = email
			user.tel = tel
			user.save()
			req.session['username'] = username
			return 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'] = username
				return 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代码。贴在下一篇,有兴趣可以直接拷贝了看效果。


 


 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值