Django(其二)
session
def session_login(request):
if request.method=='POST':
username = request.POST.get('user')
password = request.POST.get('pwd') user = UserInfo.objects.filter(name=username,pwd=password).first()
if user:
request.session['is_login']=True
request.session['username']=user.name return HttpResponse('登录成功!')
else:
return redirect('/cookie/') return render(request,"cookie.html") def session_index(request):
session_name = request.session['is_login'] if session_name:
username = request.session['username'] return render(request,"c_index.html",{'username':username}) return render(request,'c_index.html')
if request.COOKIE.get("sessionid"):
更新
在django—session表中创建一条记录:
session-key session-data
ltv8zy1kh5lxj1if1fcs2pqwodumr45t 更新数据
else:
1 生成随机字符串 ltv8zy1kh5lxj1if1fcs2pqwodumr45t
2 response.set_cookie("sessionid",ltv8zy1kh5lxj1if1fcs2pqwodumr45t)
3 在django—session表中创建一条记录:
session-key session-data
ltv8zy1kh5lxj1if1fcs2pqwodumr45t {"is_login":True,"username":"yuan"}
request.session.flush()
'''
1 randon_str=request.COOKIE.get("sessionid") 2 django-session.objects.filter(session-key=randon_str).delete() 3 response.delete_cookie("sessionid",randon_str) '''
用户认证组件:
authenticate()
创建用户:
python manage.py createsuperuser
注销:
def logout_view(request):
logout(request)
API:
from django.contrib import auth : 1 # if 验证成功返回user对象,否则返回None
user=auth.authenticate(username=user,password=pwd) 2 auth.login(request,user) # request.user:当前登录对象 3 auth.logout(request) from django.contrib.auth.models import User # User==auth_user 4 request.user.is_authenticated() 5 user = User.objects.create_user(username='',password='',email='')
补充:
匿名用户对象:
匿名用户
class models.AnonymousUser django.contrib.auth.models.AnonymousUser 类实现了django.contrib.auth.models.User 接口,但具有下面几个不同点: id 永远为None。
username 永远为空字符串。
get_username() 永远返回空字符串。
is_staff 和 is_superuser 永远为False。
is_active 永远为 False。
groups 和 user_permissions 永远为空。
is_anonymous() 返回True 而不是False。
is_authenticated() 返回False 而不是True。
set_password()、check_password()、save() 和delete() 引发 NotImplementedError。
New in Django 1.8:
新增 AnonymousUser.get_username() 以更好地模拟 django.contrib.auth.models.User。 总结: if not: auth.login(request,user) request.user == AnonymousUser() else:request.user==永远等于当前登录对象
request.user是一个全局变量 在任何视图和模板直接使用
用户认证装饰器:
添加装饰器
@login_required
在登录时写入动态的登录:
user = auth.authenticate(username=user,password=pwd)
if user:
auth.login(request,user)
next_url = request.GET.get("next","/auth_index/")
中间件
Django的中间件:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
介于request和response中间的处理过程
首先需要导入库 MiddlewareMixin
再建立一个类,在一个类下新建两个常用的方法:①process_request:用作接收(可以不写return值) ②:process_response:用作发送(必须写return值)
from django.utils.deprecation import MiddlewareMixin class Custom_middleware(MiddlewareMixin):
def process_request(self,request):
print('process_request') def process_response(self, request, response):
print("process_resoponse") return response

process_view方法:
这个方法经过request方法后,通过路由控制,再经过view方法之后,若有return则会返回,若没有则会继续往下走视图函数
process_exception
process_exception(self, request, exception)
该方法是在视图函数里出错时会执行的方法
socketserver
使用此方法分三步:
一、创建自定义类
class socker_deom(socketserver.BaseRequestHandler):
def handle(self):
"""
业务逻辑
:return:
""" while 1:
client_data = self.request.recv(1024)
print(client_data.decode("utf-8"))
if client_data.decode('utf-8')=='exit':
print("退出!")
break
print("接受数据>>>",str(client_data,"utf-8"))
response=input('相应数据>>>')
self.request.sendall(bytes(response,"utf-8"))
self.request.close()
二、实例化出一个对象
server = socketserver.ThreadingTCPServer(('127.0.0.1',8000),socker_deom)
三、实例forver
server.serve_forever()
Django(其二)的更多相关文章
- 异步任务队列Celery在Django中的使用
前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- django server之间通过remote user 相互调用
首先,场景是这样的:存在两个django web应用,并且两个应用存在一定的联系.某些情况下彼此需要获取对方的数据. 但是我们的应用肯经都会有对应的鉴权机制.不会让人家随随便便就访问的对吧.好比上车要 ...
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- Mysql事务探索及其在Django中的实践(一)
前言 很早就有想开始写博客的想法,一方面是对自己近期所学知识的一些总结.沉淀,方便以后对过去的知识进行梳理.追溯,一方面也希望能通过博客来认识更多相同技术圈的朋友.所幸近期通过了博客园的申请,那么今天 ...
- 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...
- 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...
- 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...
- Django
一.Django 简介 Django 是一个由 Python 写成的开放源代码的 Web 应用框架.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统) ...
- Django admin定制化,User字段扩展[原创]
前言 参考上篇博文,我们利用了OneToOneField的方式使用了django自带的user,http://www.cnblogs.com/caseast/p/5909248.html , 但这么用 ...
随机推荐
- 多线程之 Thread类
一.多线程第一种方式的实现步骤(继承Thread类) 代码演示: 1.定义MyThread类,继承Thread类 2.重写了里面的run方法,在run方法中定义线程要执行的任务 public clas ...
- SQL-54 查找排除当前最大、最小salary之后的员工的平均工资avg_salary。
题目描述 查找排除当前最大.最小salary之后的员工的平均工资avg_salary.CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL,`sala ...
- Java虚拟机学习-Java内存区域(一)
Java虚拟机内存划分为以下几个区域: 1.方法区:方法区是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息.常量.静态变量.即时编译器编译后的代码等数据.虽然Java虚拟机规范把方法区描述为 ...
- webservice接口,用Soapui
webservice接口怎么测试呢,他不需要你在拼报文了,会给一个webservice的地址,或者wsdl文件,直接在soapui导入,就可以看到这个webservice里面的所有接口,也有报文,直接 ...
- Maven中添加镜像
Maven库在天朝的下载速度实在是感人,所以添加镜像之后速度会提升很多. 在maven的settings.xml 文件里配置mirrors的子节点,添加如下mirror <mirror> ...
- MyBatis通过Mapper动态代理来实现curd操作
MyBatis官方推荐使用mapper代理方法开发mapper接口,程序员不需要编写mapper实现类,使用mapper代理方法时,输入参数可以使用pojo包装对象或者map对象,保证dao的通用性 ...
- 开始 第一个自己的python爬虫程序 爬磁力链
不能一事无成,这么久了学python还是吊着,要落地,落在博客园好了,好像公司也只能上博客园了 昨天看了一篇用正则爬电影天堂的视频,直接拿来用,爬磁力吧,爬好玩的 #导入模块 import reque ...
- Java学习NO.2
这是我学习Java的第二天 学习内容: 一.运算符 赋值运算符 语法:变量名=表达式 算数运算符 + - * / % ++ -- += -= *= /= %= 其中尤为要注 ...
- 【4】数独(Sudoku Killer)(深度优先遍历)
问题描述:给你多个数独题目,让你输出答案 思路:递归确定每一个‘?’的位置的值,直到所有‘?’都被确定.先将原字符数组转换为整型数组,‘?’由数字0代替,然后每一次层递归找到第一个0的位置,如果找到了 ...
- 微信小程序实际开发中学习
三个概念 微信:就是一个聊天工具 微信公众号:企业或个人用于管理其粉丝/用户的应用(类似于APP) 微信小程序:不需要下载安装直接可以使用的软件/应用/APP 小程序与公众号的区别: 定位不同(小程序 ...

