一、装饰器要加入funtools.wrap装饰

保留函数的元数据(函数名/注释)

1.装饰器

def wrapper(f):
  def inner(*args,**kwargs):
    return f(*args,**kwargs)
  return inner

  

import functools

def wrapper(f):
@functools.wraps(f)
def inner(*args,**kwargs):
return f(*args,**kwargs)
return inner 1. 执行wrapper
2. 重新赋值
index = wrapper(index)
@wrapper
def index(a1,a2):
  """
  这是一个index函数
  """
  return a1+ a2
print(index.__name__)
print(index.__doc__)

  

二、orm字段中的verbose_name

目前当注释用. 以后:在model form和form中使用.

三、路由系统中记得加入终止符 $

url(r'^login/$', admin.site.urls,name='login'),

四、用户名和密码检测

xxxx.first() # 返回对象或None

user_object = models.UserInfo.objects.filter(username=user, password=pwd).first()

xxxx.exists() # 返回布尔值

user_object = models.UserInfo.objects.filter(username=user, password=pwd).exists()

五、模板查找顺序

1、根目录templates

2、根据app注册顺序去每个app的tempaltes中找

六、cookie

原理

基于cookie实现
保存在用户浏览器端的键值对,向服务端发请求时会自动携带。

操作

def login(request):
  # return HttpResponse('...')
  # return render('...')
  # return redirect('...')
# 设置cookie
  data = redirect('...')
  data.set_cookie()
# 读取cookie
  request.COOKIES.get('xx')
  return data
必须背会一下三个参数:
  key, value='', max_age=None 应用场景: 用户认证 投票 每页默认显示数据

七、session

原理:随机字符串的过程....

基于session实现原理

依赖cookie
是一种存储数据的方式,依赖于cookie,实现本质:
用户向服务端发送请求,服务端做两件事:生成随机字符串;为此用户开辟一个独立的空间来存放当前用户独有的值.
在空间中如何想要设置值:
request.session['x1'] = 123
request.session['x2'] = 456
在空间中取值:
request.session['x2']
request.session.get('x2')
视图函数中的业务操作处理完毕,给用户响应,在响应时会将随机字符串存储到用户浏览器的cookie中.

  

cookie和session的区别?

答: cookie是存储在客户端浏览器上的键值对,发送请求时浏览器会自动携带.
session是一种存储数据方式,基于cookie实现,将数据存储在服务端(django默认存储到数据库).其本质是:
用户向服务端发送请求,服务端做两件事:生成随机字符串;为此用户开辟一个独立的空间来存放当前用户独有的值. 在空间中如何想要设置值:
request.session['x1'] = 123
request.session['x2'] = 456
在空间中取值:
request.session['x2']
request.session.get('x2')
视图函数中的业务操作处理完毕,给用户响应,在响应时会将随机字符串存储到用户浏览器的cookie中.

  拓展:djanago和session相关的配置:


SESSION_COOKIE_NAME = "sessionid" #Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串 SESSION_COOKIE_DOMAIN = None #
api.baidu.com /www.baidu.com/ xxx.baidu.com
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径 SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输 SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周) SESSION_EXPIRE_AT_BROWSER_CLOSE = False #是否关闭浏览器使得Session过期 SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存

  

#django中的session如何设置过期时间:

  SESSION_COOKIE_AGE = 1209600 # Session的 cookie失效日期(2周)

#django的session默认存储在数据库,可以放在其他地方吗:

小系统:默认放在数据库即可.
大系统:缓存(redis) 文件:
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
SESSION_FILE_PATH = '/sssss/' 缓存(内存):
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' SESSION_CACHE_ALIAS = 'default'
CACHES = {
  'default': {
    'BACKEND':
      'django.core.cache.backends.locmem.LocMem Cache',
      'LOCATION': 'unique-snowflake',
  }
} 缓存(redis):
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' SESSION_CACHE_ALIAS = 'default'
CACHES = {
  "default": {
    "BACKEND":
      "django_redis.cache.RedisCache",
      "LOCATION": "redis://127.0.0.1:6379",
    "OPTIONS": {
      "CLIENT_CLASS":
        "django_redis.client.DefaultClient",
        "CONNECTION_POOL_KWARGS": {"max_connections": 100} # "PASSWORD": "密码",
    }
  }
}

  

操作session

#读取
request.session['x']
request.session.get('xx') #设置(添加&修改)
request.session['x'] = 123 #删除
del request.session['x']

  

配置
  数据存储位置
    数据库(django默认)
    文件
    缓存(内存/redis)
cookie相关操作
应用场景
  用户认证
  短信验证过期
  权限管理
强调
session中的数据是根据用户相互隔离.
# 示例
def login(request):
  # 获取用户提交的用户名和密码
  user = request.POST.get('user')
  request.session['user_name'] = user
def index(request):
print(request.session['user_name'])

  

八、Http协议

什么是HTTP协议

超文本传输协议
关于连接:一次请求一次响应之后断开连接(无状态、短连接)
关于格式:
请求:请求头+请求体
  (http:www.baidu.com/index/?a=123)
  send("GET /index/?a=123
  http1.1\r\nhost:www.baidu.com\r\nuseragent:Chrome\r\n\r\n")
  send("POST /index/
  http1.1\r\nhost:www.baidu.com\r\nuseragent:Chrome\r\n\r\nusername=alex&pwd=123")
响应:响应头+响应体
  Content-Encoding: gzip\r\nCache-Control:
  private\r\n\r\n网页看到的HTML内容
扩展:常见的请求头都有哪些?
- user-agent:用什么浏览器访问的网站。
- content-type: 请求体的数据格式是什么?(服务端按照格式要求进行解析)
扩展:常见的请求方式?
- GET
- POST

九、django请求生命周期

django请求生命周期 / 浏览器上输入http://www.xxx.com 请求到 达django后发生了什么?

补充:

1、通过js设置cookie

document.cookie = 'k1=wy222;path=/'

$.cookie('k1','wy222',{path:'/'})

注意:path不同会导致设置不同.

2、path的作用

/ , 当前网站中所有的URL都能读取到此值.

"", 只能在当前页面访问的到此数据.

/index/ , 只能在/index/xxx 的网页中查看.

cooke和session的更多相关文章

  1. python Django cookie和session

    在一个会话的多个请求中共享数据,这就是会话跟踪技术.例如在一个会话中的请求如下:  请求银行主页: 请求登录(请求参数是用户名和密码): 请求转账(请求参数与转账相关的数据): 请求信誉卡还款(请求参 ...

  2. python 全栈开发,Day76(Django组件-cookie,session)

    昨日内容回顾 1 json 轻量级的数据交换格式 在python 序列化方法:json.dumps() 反序列化方法:json.loads() 在JS中: 序列化方法:JSON.stringfy() ...

  3. Django组件-cookie,session

    昨日内容回顾: json 轻量级的数据交换格式 在python 序列化方法:json.dumps() 反序列化方法:json.loads() 在JS中: 序列化方法:JSON.stringfy() 反 ...

  4. python Django session/cookie

    一, Cookie #cookie # def cook1(request): # print(request.COOKIES) # 查看cooke # # print(request.get_sig ...

  5. asp.net web.config 设置Session过期时间

    在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...

  6. Asp.NET设置Session过期时间的四种方式

    在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...

  7. 转:设置session过期时间

    在Asp.net应用中,很多人会遇到Session过期设置有冲突.其中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会 ...

  8. JavaWeb之Servlet:Cookie 和 Session

    会话 现实生活中我们会用手机跟对方对话,拿起手机,拨号,然后对面接听,跟着互相通话,最后会话结束. 这个过程也可以用我们的B/S模式来描述: 打开浏览器—>输入地址->发出请求->服 ...

  9. Cookie与Session详解

    来源:<PHP核心技术与最佳实践> 列旭松 陈文 著 Cookie与Session详解读书笔记,从概念.操作.应用.注意事项以及区别等几方面详细阐述两者的基础知识,它们都是针对HTTP协议 ...

随机推荐

  1. 获取指定网卡对应的IP地址

    #include <stdio.h> #include <string.h> #include <sys/socket.h> #include <sys/ty ...

  2. Shell 快速入门(十八):特殊符号的使用

    在 Shell 语言中,经常会看到中括号和括号组成的特殊标识,例如:[].[[]].(()).$(()).().这些符号经常使我们非常迷惑,弄清楚它们之间的作用和区别非常必要. 在开始之前,我们先来学 ...

  3. IT男频繁猝死背后的心理探秘

    "深圳36岁IT男猝死酒店马桶上"这条新闻再次成为人们眼球的焦点,每每发生这样的事情,难免让人扼腕唏嘘,他们本该是风华正茂的年纪,家有老母贤妻爱子,甚至房子车子票子都不缺,该是一边 ...

  4. 用Python拨打电话

    用python拨打电话,先看小视频 跟selenium操作浏览器原理类似,这是用appium操作移动设备的一个自动化功能,自娱自乐,主要是通过小案例引出相关技术 一.环境配置: 1.安装 jdk 1. ...

  5. Rong's Portfolio

    車架貼標設計 Velocite SYN frame decals 以簡潔設計的原則,分別依公路車.登山車.電動車的屬性設計表面塗裝曲線,針對車架特殊造型設計貼標突顯其功能,並搭配品牌基本色與市場偏好色 ...

  6. nginx 502排错

    线上一台机器(该论坛所在机器)近期频繁出现502,每100次访问就会出现10次,这频率也太高了.于是开始了我的502排查之旅 ps aux |grep -c php 结果为200 netstat -a ...

  7. sycCMS PHP V1.0---呵呵呵呵呵

    闲的无聊,随便找了份代码看了看. //search.php 第17行 第49行 ...... $keyword=SafeRequest("keyword","post&q ...

  8. Android 开发技术周报 Issue#270

    新闻 Play Store应用更新:换主题不需要再到系统设置了 新证据表明谷歌Fuchsia系统已进入"狗粮"阶段 即将邀请用户测试 谷歌I/O 2020 开发者大会如期举行 MW ...

  9. tfgan折腾笔记(二):核心函数详述——gan_model族

    定义model的函数有: 1.gan_model 函数原型: def gan_model( # Lambdas defining models. generator_fn, discriminator ...

  10. Javascript学习笔记-基本概念-操作符

    1.一元操作符 (1)递增和递减操作符 只能操作一个值的操作符叫一元操作符. var age = 29; ++age; var age = 29; --age; var age = 29; var a ...