session:
内容回顾:
多对多
class Pulisher(models.Model):
name = models.CharField(max_length=32)
class Book(models.Model):
name = models.CharField(max_length=32)
pub = models.ForeignKey('Pulisher',on_delete=models.DO_NOTHING)
class Author(models.Model):
name = models.CharField(max_length=32)
books= models.ManyToManyField(to='Book')
# 查询
book_obj.pub # 所关联的对象 book_obj.pub_id 所关联的对象的id
author_obj.books # 关系管理对象
author_obj.books.all() # 所关联的所有的书籍对象
# 新增
Book.objects.create(name='xxx',pub=对象)
Book.objects.create(name='xxx',pub_id=对象的ID)
obj= Book(name='xxx',pub_id=对象的ID)
obj.save()
obj = Author.objects.create(name='xxx')
obj.books.set([书籍id,书籍id])
# 删除
Book.objects.filter(pk=pk).delete() # QuerySet 删除
Author.objects.get(pk=pk).delete() # 对象 删除
# 编辑
Book.objects.filter(pk=pk).update(name='xxx')
book_obj.name ='xxxx'
book_obj.save()
Author.objects.filter(pk=pk).update(name='xxx')
author_obj.books.set([id,id])
cookie
定义:
保存在浏览器上的一组组键值对
为什么要有cookie?
http协议是无状态,每次请求都是相互独立,没有办法保存状态.用cookie保存状态.
cookie的特点:
由服务器让浏览器进行设置的
浏览器保存在本地的
下次访问时自动携带对应的cookie
Django中操作cookie的方法:
设置
响应头: set-cookie : key=value
response.set_cookie(key,value,max_age=5,path='/')
response.set_signed_cookie(key,value,salt='xxxx',max_age=5,path='/')获取
请求头: cookie
request.COOKIES # {}
request.COOKIES.get(key)
request.get_signed_cookie(key,salt='xxxx',default='')删除
response.delete_cookie(key)
装饰器:
from functools import wraps
def wrapper(func):
@wraps(func) # 复制了原来函数的名字和注释
def inner(request,*arg,**kwargs):
# 之前
ret = func(request,*arg,**kwargs)
# 之后
return ret
return inner
@wrapper # f1 = wrapper(f1)
def f1(request):
pass
f1.__name__ # inner _> f1
response:
from django.shortcuts import render, redirect, HttpResponse
HttpResponse()
render()
redirect()
session
定义:保存在服务器上的一组组键值对,必须依赖cookie
为什么要有session?
cookie保存在浏览器上,不太安全
cookie的大小和个数有限制
Django中操作session
设置:
request.session[key] = value
获取
request.session[key]
request.session.get(key)
删除:
request.session.pop('is_login')
request.session.delete() # 删除所有的session数据
request.session.flush() # 删除所有的session数据和cookie
其他:
request.session.clear_expired()
request.session.set_expiry(value)
配置:
from django.conf import global_settings
SESSION_COOKIE_NAME = 'session' # cookie的名字
SESSION_SAVE_EVERY_REQUEST = True # 每次请求都更新session
SESSION_EXPIRE_AT_BROWSER_CLOSE = True # 浏览器关闭session就失效
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
from django.contrib.sessions.backends import db
# 数据库 缓存 缓存+数据库 文件 加密cookie
正则表达式
^ $ [0-9] [a-zA-Z] [asd]{4,6} +(一个或多个) *(0个或多个) ? (0个或1个)
\d \w .(除了换行符之外的任意字符)
分组:
url(r'^del_publisher/(\d+)/', views.del_publisher),
分组后从url中捕获参数,捕获的参数会按照 位置传参 传递给函数
命名分组
url(r'^del_publisher/(?P<pk>\d+)/', views.del_publisher),
分组后从url中捕获参数,捕获的参数会按照 关键字传参 传递给函数
url的命名和反向解析
命名:
url(r'^login/', views.login,name='login'),
反向解析:
模板:
{% url 'login' %} -> "/app01/login/" # 反向解析生成一个可以访问的地址
py文件:
from django.urls import reverse
reverse('login') ——》 "/app01/login/" # 反向解析生成一个可以访问的地址
分组
url(r'^blog/([0-9]{4})/(\d{2})/$', views.blog,name='blog'),
模板:
{% url 'blog' 2020 10 %} ——》 ‘/app01/blog/2020/10/’
py文件:
reverse('blog',args=['2019','10'] ——》 ‘/app01/blog/2020/10/’
命令分组
url(r'^blog/(?P<year>[0-9]{4})/(?P<month>\d{2})/$', views.blog,name='blog'),
模板:
{% url 'blog' 2020 10 %} ——》 ‘/app01/blog/2020/10/’
{% url 'blog' month=10 year=2019 %} ——》 ‘/app01/blog/2020/10/’
py文件:
reverse('blog',args=['2019','10'] ——》 ‘/app01/blog/2020/10/’
reverse('blog',kwargs={'year':'2019','month':'10'}) ——》 ‘/app01/blog/2020/10/’
namespace:
url(r'^app01/', include('app01.urls',namespace='app01')),
url(r'^app02/', include('app02.urls',namespace='app02')),
{% url 'namespace:name' %}
reverse('namespace:name')
session:的更多相关文章
- 12月15日 session:Ruby on Rails Security Guide//从第3节开始没有学习//关于find_by 和where的区别用法思考。
http://guides.rubyonrails.org/security.html#user-management 2.session笔记见13日的随笔. http://www.cnblogs.c ...
- Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
一.高可用的Session服务器场景简介 1.1 应用服务器的无状态特性 应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性. PS:提到无状态特性 ...
- ASP.NET:在一般处理程序中通过 Session 保存验证码却无法显示图片?
using System.Drawing; using System.Web; using System.Web.SessionState; /// <summary> /// Captc ...
- 【转】 Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
一.高可用的Session服务器场景简介 1.1 应用服务器的无状态特性 应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性. PS:提到无状态特性 ...
- JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)
1.转发和重定向 HttpServletResponse response 转发: RequestDispatcher dispatcher = request.getRequestDispatche ...
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- servlet三大作用域:request,session,application
javaweb开发中Servlet三大域对象的应用(request.session.application(ServletContext)). 1. request request是表示一个请求,只要 ...
- JavaEE:Cookie和Session
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样web资源处理的就是用户各自的数据了. ...
- jsp 的四个作用域 :page、request、session和application的区别 (转)
1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的整个过程.在这个过程中使用forward方式跳转多个jsp.在这些页面里你都可以 ...
随机推荐
- 浅谈JS函数节流及应用场景
说完防抖,下面我们讲讲节流,规矩就不说了,先上代码: <!DOCTYPE html> <html lang="en"> <head> <m ...
- 201871010108-高文利《面向对象程序设计(java)》第十四周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...
- c++ 命令行执行
常用命令如下 g++ -g -std=c++ a.cpp -std 指定c++的版本 -g 在可执行程序中包含标准调试信息 -o FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的.如果 ...
- 剑指Offer-28.数组中出现次数超过一半的数字(C++/Java)
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如 ...
- WPF combobox数据绑定和数据获取
本文章仅为个人学习,如有错误之处请指正. 搭建WPF界面的时候,想用combobox构建一个下拉菜单,搜索的时候看到大多数都是大段代码,逻辑顺序不是很详细,摸索了大概,记录一下方便来者. 拖入comb ...
- shell登陆加载的文件, 快捷命令, tee管道, nohup和&
1. login shell和nologin shell的理解: 字面意思, 需要登陆的shell和不需要登陆的shell. 正确解释为: 加载用户环境配置的shell 和不加载用户环境配置的shel ...
- 【python爬虫】cookie & session
一.什么是cookie? cookie是指网站为了鉴别用户身份,进行会话跟踪而存储在客户端本地的数据. 二.什么是session? 本来的含义是指有始有终的一些列动作,而在web中,session对象 ...
- https 请求curl返回false问题
function requestByCurl($remote_server,$post_string,$use_post=true){ if(function_exists('curl_init')) ...
- IT兄弟连 Java语法教程 数组 深入数组 内存中的数组
数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的.下面将深入介绍数组在内存中的运行机制. 内存中的数组 数组引用变量只是一个引用,这个引用变量可以指向任何有效的 ...
- python学习第一天第二天总结
变量赋值 1, 变量由字⺟, 数字,下划线搭配组合⽽成 2, 不可以⽤数字开头,更不能是全数字 3,不能是pythond的关键字, 这些符号和字⺟已经被python占⽤, 不可以更改 4,不要⽤中⽂ ...