【django4】简单注册/登陆/注销功能

来源:互联网 发布:新致软件 编辑:程序博客网 时间:2024/06/03 17:10

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, includefrom account import views as account_viewsurlpatterns = [    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 renderfrom .models import UserModelfrom 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:passreturn 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自带模块构建用户注册登录系统。



0 0
原创粉丝点击