Django重新整理2
Auth认证:
1.分配路由和创建视图函数
2.在视图函数中引用Django为我们提供的用户认证组建Auth
3.直接进行判断:
def login(request):
if request.method =='GET':
return render(request,'login.html')
else:
user = request.POST.get('user')
pwd= request.POST.get('pwd')
auth_obj=auth.authenticate(username=user,password=pwd)
if auth_obj:
#保存用户信息
auth.login(request,user_obj)
return redirect("/index/")
else:
return redirect("/login/") #login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<input type="text" name="uer">
<input type="password" name="pwd">
<input type="submit">
</form>
</body>
</html> #index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
当前用户:{{ name }}
当前用户:{{ request.user.username }}
<a href="/logout/">注销</a>
<a href="/set_password/">修改密码</a>
</body>
</html>
session的设置
1.分配路由和创建视图函数
2.
Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中。 def login_session(request):
if request.method=='GET':
return render(request,'login.html')
else:
user=request.POST.get('uer')
pwd=request.POST.get('pwd')
print(user,pwd)
user_obj=UserInfo.objects.filter(user=user,pwd=pwd).first()
if user_obj: # 用户认证信息存储
request.session["susername"]=user
request.session["slogin"]=True '''
if request.COOKIE.get("sessionid"):
random_str=request.COOKIE.get("sessionid")
在django-seesion表中过滤session-key=random_str的记录进行update else: 1 生成一个随机字符串 23423hkjsf890234sd
2 向django-session表中插入记录
session-key session-data
23423hkjsf890234sd {"susername":"egon","slogin":True} 3 响应set_cookie : {"sessionid":23423hkjsf890234sd} '''
return redirect("/index_session/") else:
return HttpResponse('error') #取session
def index_session(request): '''
request.session
1 request.COOKIE.get("sessionid") :23423hkjsf890234sd
2 在django-session表过滤session-key=23423hkjsf890234sd的记录
3 取过滤记录的session-data反序列化成数据字典:{"susername":"egon","slogin":True} ''' slogin=request.session.get("slogin") if not slogin:
return redirect("/login_session/") susername=request.session.get("susername")
name=""
shangpin = "香蕉"
shangpin_list = ["苹果", "荔枝", "榴莲"]
return render(request, 'index.html', {'name': susername, 'shangpin': shangpin, 'shangpin_list': shangpin_list})
Django重新整理2的更多相关文章
- Django重新整理
1.母版的继承 #base<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset ...
- Django知识点整理
什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. web应用 访 ...
- django笔记整理
Django复习: MTV模型: manager启动服务→urls找到路径→(找到views视图函数或者做路由分发)→视图函数处理相关逻辑,返回一个模板或者是字符串: ---------------- ...
- Django重新整理4---ModelForm-set(批量处理数据)
1. #引用modelformset from django.forms.models import modelformset_factory #必须继承forms.ModelForm! class ...
- Django重新整理3
Forms组件 1.在models.py中我们建立一个新的表关系: class UserInfo(models.Model): user=models.CharField(max_length=32) ...
- Django ORM整理
字段类型 # 自增长 Auto = models.AutoField() BigAuto = models.BigAutoField() # 二进制 Binary = models.BinaryFie ...
- Django(一) 安装使用基础
大纲 安装Django 1.创建Django工程 2.创建Django app 3.写一个简单的登录注册相应页面 4.获取用户请求信息并处理 5.前后端交互 6.Django 请求 生命周期 跳转到 ...
- python学习博客地址集合。。。
python学习博客地址集合... 老师讲课博客目录 http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs. ...
- 老男孩老师的博客地址 - 转自devops1992
害怕他那天不让人看了,所以我就复制一份到我自己的博客里. http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs. ...
随机推荐
- CodeForces 404C Restore Graph (构造)
题意:让人构造一个图,满足每个结点边的数目不超过 k,然后给出每个结点到某个结点的最短距离. 析:很容易看出来如果可能的话,树是一定满足条件的,只要从头开始构造这棵树就好,中途超了int...找了好久 ...
- 《Effective Java》第10章 发并
第66条:同步访问共享的可变数据 Java语言规范保证读或者写一个变量是原子的(atomic ) ,除非这个变量的类型为long或者double. [java中long和double类型操作的非原子性 ...
- Altium designer14裁剪PCB的方法
很多人都跟我反应说AD14不能定义板框大小,或者说是不知道怎么定义板框的大小, 确实AD14的操作和AD13或者是AD10的版本斗有一些差异, 其实对于熟悉AD的人来说自己玩两天,这些差异就不算什么了 ...
- 2019年第十届蓝桥杯省赛-糖果(一维状压dp)
看到20的数据量很容易想到状压dp. 开1<<20大小的数组来记录状态,枚举n个糖包,将其放入不同状态中(类似01背包思想) 时间复杂度O(n*(2^20)). import java.u ...
- MVC中使用代码创建数据库(code first +mysql+EF)
1.新建一个mvc项目 2.安装mysql需要的几个文件 EntityFramework.MySql.Data(6.9.12)和MySql.Data.Entity (6.9.12) 这里有几点要注意 ...
- eval实例
.... var sel_MedicineType = 'sel_MedicineType' + lastIndex; eval(sel_MedicineType + "= new C_Se ...
- .net core 基于NPOI 的excel导入导出类,支持自定义导出哪些字段,和判断导入是否有失败的记录
#region 从Excel导入 //用法 //var cellHeader = new Dictionary<string, string>(); //cellHeader.Add(&q ...
- Locust压力测试使用总结
https://blog.csdn.net/jojoy_tester/article/details/77926470 参考网址 上次做接口压力测试前一直研究使用jmeter,本以为可以拿来使用了, ...
- Unity Fps示例
https://mp.weixin.qq.com/s/JGnU6TW1V0BCrz0mCRswig
- vue添加新属性不更新原因
一: 在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去: 当我们去看vue文档的时候,会发现有这么一句话:如果在实例创建之后 ...