在models模块中创建用户表
class User(models.Model):
u_name=models.CharField(max_length=32)
u_pwd=models.CharField(max_length=32)
u_token=models.CharField(max_length=258)
配置路由
app中的urls
from app import views urlpatterns = [ url(r'^hello/', views.hello), url(r'^register/',views.register,name='register'),#注册 url(r'^index/',views.index,name='index'),#首页 url(r'^login/',views.login,name='login'),#登陆 ]
项目day06的路由
from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'app/',include('app.urls',namespace='app')) ]
根据你的路由创建视图函数
1.首先是注册,设置token标识,并为密码加密
#设置token标示
def make_toke():
uid=str(uuid.uuid4())#可以生成当前网段的唯一标识
md=hashlib.md5()#哈希加密
md.update(uid.encode('utf-8'))#utf-8编码
return uid
#密码加密操作
def make_pwd(pwd):
#不管是否为字符串,首先转成字符串
password=str(pwd)
#哈希对象,需要导包
md=hashlib.md5()
#utf-8编码
md.update(password.encode('utf-8'))
#已十六进制返回
return md.hexdigest()
#注册
def register(request):
#请求方式为get
if request.method == 'GET':
return render(request,'register.html')
#请求方式为post
else:
#取出信息
username=request.POST.get('username')
pwd=request.POST.get('password')
users=User.objects.filter(u_name=username)
#首先判断用户是否存在
if users.exists():
return HttpResponse('该用户已存在')
#不存在添加用户信息
user=User()
user.u_name=username
user.u_pwd=make_pwd(pwd)
user.u_token=make_toke()#自定义session方法
user.save()#添加完需要保存到数据库中
red = HttpResponseRedirect(reverse('app:login'))#重定向操作
red.set_cookie('token', user.u_token)#设置cookie
return red#跳转到login页面
2.然后是首页
#首页
def index(request):
#获取cookie
token=request.COOKIES.get('token')
#不存在返回登录页面
if not token:
return render(request,'login.html')
#存在就比对信息一致后返回首页
user=User.objects.get(u_token=token)
return render(request,'index.html',context={'user':user})
3.登录(差点打成登陆。。。)
#登录
def login(request):
if request.method=='GET':
return render(request,'login.html')
else:
#获取用户比对信息,密码加密比对
username=request.POST.get('username')
pwd=request.POST.get('password')
users=User.objects.filter(u_name=username)
pwd2=make_pwd(pwd)
pwd1=User.objects.filter(u_pwd=pwd2)
#用户唯一,直接取第一个
user=users.first()
#不存在返回注册页面
if not users.exists():
return render(request,'register.html')
else:
#存在比对密码,密码不一致重新返回登录页面
if not pwd1.exists():
return render(request,'login.html')
else:
#一致跳转到首页并设置cookie
response = redirect(reverse('app:index'))
response.set_cookie('token', user.u_token)
return response