session会话

it2022-05-27  84

session会话

1.views.py文件使用session会话

from django.shortcuts import render from django.http import HttpResponse from django.shortcuts import redirect # Create your views here. from app_login.models import User import forms #导入forms表单 def index(request): return render(request, 'login/index.html') def login(request): if request.session.get('is_login'): #不允许重复登陆 return redirect("/index/") if request.method=="POST": #提交表单后,满足请求为post就执行下面的内容 message = '所有字段都必须填写' login_form=forms.UserForm(request.POST) #获取每个input标签 # username = request.POST.get('username') #获取表单中输入的用户名和密码 # password = request.POST.get('password') # print(username,password) # if username and password : #用户名和密码都不为空 # username=username.strip() #清除用户名前后的空格 if login_form.is_valid(): #这个就是用于验证输入表单内容的合法性 username=login_form.cleaned_data['username'] #cleaned_data会将input标签中的变量和值作为以字典的一个元素形式表现出来 password=login_form.cleaned_data['password'] # user = User(username, password) #添加到User表中 # user.save() #存储到数据库中 #查询数据库中是否存在该用户名和密码 t_username=User.objects.filter(name=username) print(t_username) t_password=User.objects.filter(password=password) if t_username and t_password: request.session['is_login']=True #写入用户状态和数据 # request.session['user_id']=t_username.id request.session['user_name']=username return redirect('/index/') elif not t_username: # return HttpResponse('用户名不存在') message='用户名不存在' elif not t_password: # return HttpResponse('密码不存在') message='密码不存在' return render(request,'login/login.html',{"message":message,"login_form":login_form}) #将message信息通过模板传递到网页 login_form=forms.UserForm() #保留输入的错误字段 return render(request,'login/login.html',{"login_form":login_form}) def register(request): return render(request,'login/register.html') def logout(request): if not request.session.get('is_login'): #如果登陆状态为未登陆 return redirect('/index/') #就跳转至主页(也就是依然停留在当前页面) request.session.flush() #清除session记录 return redirect('/index/')

2.修改base.html文件

{% load staticfiles %} <!--加载静态方法--> <!DOCTYPE html> <html lang="zh-CN"> <head> <!--设置字符集、浏览器优先渲染模式以及可视区域设置等,不用修改,按模板默认的就行--> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --> <title>{% block title %}base{% endblock %}</title> <!--通过模板设置title动态加载--> <!-- Bootstrap 将放入static下对应的内容加载进来,导入bootstrap样式文件,通过模板设置动态加载--> <link href="{% static '/bootstrap-3.3.7-dist/css/bootstrap.css' %}" rel="stylesheet"> {% block css %}{% endblock %} <!--通过模板设置css动态加载--> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]><!--用于支持ie9以下的版本支持h5,按alt+enter点击下载即可--> <script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <!-- 导入jquery插件,通过模板设置动态加载 --> <script src="{% static 'js/jquery-3.3.1.js' %}"></script> <!-- 导入bootstrap的js文件,通过模板设置动态加载--> <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script> </head> <body> <nav class="navbar navbar-default" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#">主页</a> </div> <ul class="nav navbar-nav navbar-right"> {% if request.session.is_login %} <!--views.py文件中登陆成功后赋值未True,这里拿到True后就进入判断语句--> <li><a href="#">当前在线:{{ request.session.user_name }}</a></li> <!--这里显示的是views文件中输入的username,也就是当前登陆成功的用户名--> <li><a href="/logout/">登出</a></li> <!--导航条点击登出跳转至登出页面--> {% else %} <!--如果登陆成功就不会执行下面的代码,避免出现登陆成功后依然显示注册登陆的情况,另外登出或未登陆时访问网页才会出现下面的内容--> <li><a href="#"><span class="glyphicon glyphicon-user"></span> 注册</a></li> <!--导航条点击注册跳转至注册页面--> <li><a href="/login/"><span class="glyphicon glyphicon-log-in"></span> 登录</a></li> <!--导航条点击登陆跳转至登陆页面--> {% endif %} </ul> </div> </nav> {% block content %}{% endblock %} <!--为具体主体内容留下接口--> </body> </html>

3.修改主页页面index.html

{% extends 'base.html' %} <!--加载base模板内容--> {% block title %}主页{% endblock %} <!--这里不使用base模板的,自定义title--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>主页</title> </head> <body> {% block content %} {% if request.session.is_login %} <!--这里判断登陆成功,就进入欢迎页面--> <h1>你好,{{ request.session.user_name }}!欢迎回来</h1> {% else %} <!--未登陆就显示以下公开内容的页面--> <h1>你尚未登陆,只能访问公开内容!</h1> {% endif %} <!--结束循环--> {% endblock %} </body> </html>

4.显示效果

登陆成功

登出

转载于:https://www.cnblogs.com/endmoon/p/9744750.html


最新回复(0)