views
from django.shortcuts import render,redirect,HttpResponse from django.contrib import auth from app01.models import UserInfo from django.contrib.auth.decorators import login_required # Create your views here. # 登录 def login(request): # 用户输入用户名,密码之后点击提交,收到POST请求 if request.method=='POST': username= request.POST.get('username') password= request.POST.get('password') # 调用auth.authenticate方法 传入用户名密码去验证 拿到一个验证之后的结果 auth_obj = auth.authenticate(username=username,password=password) # 如果验证通过 if auth: # 如果登录成功,把用户的id保存在session中 auth.login(request,auth_obj) return redirect('/index/') # 如果验证不成功,继续返回登录页面,并返回前端提示信息 else: return render(request,'logon.html',{'error_msg':'用户名或密码错误!!!'}) # 用户GET请求 return render(request,'login.html') # 首页 @login_required def index(request): return render(request,'index.html') # 注销 def logout(request): # 清除用户的登录session信息 并跳转回登录页面 auth.logout(request) return redirect('/login/') # 注册 def reg(request): if request.method =='POST': username = request.POST.get('username') password = request.POST.get('password') # 假设数据有效性经过验证,去数据库中添加记录 # 这里千万要小心是使用create_user在数据库汇中总添加记录 UserInfo.objects.create_user(username=username,password=password) # 注册成功跳转到login页面 return redirect('/login/') return render(request,'reg.html')
models
from django.db import models # 继承Django自带的表格创建类 是一个抽象类 from django.contrib.auth.models import AbstractUser # Create your models here. GENDER_CHOICES = ((1,'女'),(2,'男'),(3,'保密')) DEFAULT_GENDER = 3 # 使用自己创建的UesrInfo表 来替代Django,auth模块自动创建的表的基础上自定义一些其他的字段, class UserInfo(AbstractUser): # 扩展auth表里面没有的字段 gender = models.PositiveSmallIntegerField(choices=GENDER_CHOICES,default=DEFAULT_GENDER) phone = models.CharField(max_length=11)
setting
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai' # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.11/howto/static-files/ STATIC_URL = '/static/' # 静态文件夹的配置信息 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] # auth模块的配置 LOGIN_URL = '/login/' # 项目登录页面的路由 # 使用Django自带的数据表 但是自定义增加一些其他的字段 继承使用的时候需要配置 AUTH_USER_MODEL = "app01.UserInfo" # 中间不需要写models
index
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>index页面!!!</title> </head> <body> <h1>这是index页面!!!</h1> <h1>欢迎:{{ request.user.username }} 登录index页面!!!</h1> <a href="/logout/">注销</a> </body> </html>
login
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>登录页面!!</title> </head> <body> <form action=""method="post"> {% csrf_token %} <div> <label for="input_username">用户名:</label> <input type="text" name="username" id="input_username"> </div> <div> <label for="input_pwd">密码:</label> <input type="password" name="password" id="input_pwd"> </div> <input type="submit" name="" id=""> <p>{{ error_msg }}</p> </form> </body> </html>
reg
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>注册页面!!!</title> </head> <body> <form action=""method="post"> {% csrf_token %} <div> <label for="input_username">用户名:</label> <input type="text" name="username" id="input_username"> </div> <div> <label for="input_pwd">密码:</label> <input type="password" name="password" id="input_pwd"> </div> <div> <label for="re_input_pwd">再次输入密码:</label> <input type="password" name="re_password" id="re_input_pwd"> </div> <input type="submit" > </form> </body> </html>