版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiandawangliang/article/details/60478512
Python版本3.5,django版本1.10
1 新建项目
django-admin.py startproject website1
2 启动服务器,查看是否正常
manage.py runserver
3 进入工程website1一级文件夹下新建app
python manage.py startapp account
4 将新建立的app加入工程中
修改 website1/website1/settings.py的INSTALL_APPS,将app名称加入该元组中。
5 修改website1/urls.py文件
from django.conf.urls import url, include
from account import views as account_views
urlpatterns = [
url(r'^index/', account_views.index), # 用户主界面
url(r'^register/', account_views.register), # 注册界面
url(r'^login/', account_views.login), # 登陆界面
url(r'^logout/', account_views.logout), # 注销界面
]
6 修改views.py
from django.shortcuts import render
from .models import UserModel
from django.http import HttpResponseRedirect
# Create your views here.
def index(request):
s = request.session.get('username', default=None)
if s:
return render(request, 'account/index.html', {'username':s}) # 跳转至用户主界面
else:
return HttpResponseRedirect('/login')
def register(request):
if request.method == 'POST': # 用户输入账户密码后提交表单
username = request.POST['username']
password = request.POST['password']
UserModel.objects.create(username=username, password=password) # 写入数据库
return render(request, 'account/regok.html')
else: # 用户直接访问注册页面
return render(request, 'account/register.html')
def login(request):
if request.method == 'POST': # 用户输入账户密码后提交表单
username = request.POST['username']
password = request.POST['password']
hasUser = UserModel.objects.filter(username=username, password=password)
if hasUser: # 该用户存在
request.session['username'] = username # 保存用户名在session中
return render(request, 'account/index.html', {'username':username}) # 跳转至用户主界面
else:
return render(request, 'account/login.html')
else: # 用户直接访问登陆页面
return render(request, 'account/login.html')
def logout(request):
try:
del request.session['username'] # 将用户名从session中删除
except KeyError:
pass
return render(request, 'account/logout.html')
7 编写HTML
index.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>用户中心</title>
</head>
<body>
欢迎您,{{username}}
<a href="/logout">退出</a>
</body>
</html>
login.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>登陆</title>
</head>
<body>
<h2>请登陆</h2>
<form method="post">
{% csrf_token %}
用户:<input name="username" type="text" ><br/>
密码:<input name="password" type="password" ><br/>
<input type="submit" value="登陆" >
</form>
</body>
</html>
register.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form method="post">
{% csrf_token %}
用户:<input name="username" type="text" ><br/>
密码:<input name="password" type="password" ><br/>
<input type="submit" value="注册" >
</form>
</body>
</html>
regok.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>注册成功</title>
</head>
<body>
<h2>注册成功!</h2>
点击<a href="/login">这里</a>跳转至登陆界面
</body>
</html>
logout.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>注销</title>
</head>
<body>
已注销!
</body>
</html>
8 models.py中的模型
from django.db import models
# Create your models here.
class UserModel(models.Model):
username = models.CharField(max_length=30)
password = models.CharField(max_length=30)
def __str__(self):
return self.username+", "+self.password
系统并没有对注册和登陆的输入进行检测,也没有对重复注册进行检测,用session变量判断用户是否登陆。
其实,django中自带了很多模块可以快速建立用户注册登录系统,相关模块如下;
Froms模块,代替表单中的输入部分,对输入进行检查
User模块:代替上文中自己编写的UserModel模型,具有更多字段
auth模块:对用户输入进行验证
login模块:代替上文中session变量部分,django自动判断用户是否登陆或注销
下一篇文章将介绍如何应用Django自带模块构建用户注册登录系统。