django上课笔记4-复习数据库操作-复习模板-Seccion-详细cookie和session的区别
一、复习数据库操作
字段类型
字符串
EmailField(CharField):
IPAddressField(Field)
URLField(CharField)
SlugField(CharField)
UUIDField(Field)
FilePathField(Field)
FileField(Field)
ImageField(FileField)
CommaSeparatedIntegerField(CharField)
时间类:
models.DateTimeField(null=True)
数字:
num = models.IntegerField()
num = models.FloatField()
mum = models.DecimalField(max_digits=30,decimal_places=10)
枚举(Django):
color_list = (
(1,'黑色'),
(2,'白色'),
(3,'蓝色')
)
color = models.IntegerField(choices=color_list) 1. 自己操作:
自己取,自己用
2. 给Django admin使用 应用场景:选项固定 PS: FK选项动态 字段参数:
null=True,
default='',
db_index=True,
unique=True class Meta:
# unique_together = (
# ('email','ctime'),
# )
# index_together = (
# ('email','ctime'),
# ) - 操作:
- 增删改查
- filter(),update(),create()
- all() values values_list()
- FK
正向:
filter() values,values_list() -> 跨表 fk__xxx
objs = all()
for obj in objs:
obj.fk.
反向:
filter() values,values_list() -> 跨表 小写表名称__xxx
objs = all()
for obj in objs:
obj.小写表名称_set.all()
- M2M:
M2M 自定义 M2M+自定义 正向(有M2M):
obj = ...
obj.m.add()
obj.m.remove()
obj.m.set()
obj.m.clear()
obj.m.all()...
反向:
obj ...
obj.表名_set.add
... M2M+自定义 CSRF:POST时,需要用户携带随机字符
- Form
- {% csrf_token %}
- Ajax
- data
- cookie中获取,添加到请求头
XSS:
- 不用safe
- mark_safe
- 过滤关键字 Cookie:
- 放在用户浏览器端的键值对
- 可以放很多,但是对于敏感信息
二. 复习模板
- 基本使用
- 母版
- 页面继承
- include
- 导入小组件
pub.html
<div>
<h3>特别漂亮的组件</h3>
<div class="title">标题:{{ name }}</div>
<div class="content">内容:{{ name }}</div>
</div> test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
{% include 'pub.html' %}
{% include 'pub.html' %}
{% include 'pub.html' %}
</body>
</html> - 函数-> 自动执行
- 模板自定义函数:xxx.py
from django import template register = template.Library() @register.filter
def my_upper(value,arg):
return value + arg @register.filter
def my_bool(value):
return False @register.simple_tag
def my_lower(value,a1,a2,a3):
return value + a1 + a2 + a3
- simple_filter
- 最多两个参数,方式: {{第一个参数|函数名称:"第二个参数"}}
- 可以做条件判断
- simple_tag
- 参数无限制: {% 函数名 参数 参数%}
三、seccion
from django.shortcuts import render,HttpResponse,redirect def login(request):
if request.method=='GET':
return render(request, 'login.html')
else:
user = request.POST.get('username')
pwd = request.POST.get('passwd')
gender = request.POST.get('gender')
rmb = request.POST.get('rmb')
if user=='alex' and pwd=='':
#1.生成随机字符串
#2.通过cookie发给客户端
#3.服务端保存随机字符串{'随机字符串':{'username':'alex','age':'36'}}
request.session['username'] = user
request.session['passwd'] = pwd
return redirect('/index/')
else:
return render(request, 'login.html', {'msg': '用户名或密码错误'}) # def abc(request):
# request.session.delete(request.session.session_key)
# v = request.session.session_key
# if not v:
# return HttpResponse('清空session成功')
# else:
# return HttpResponse(str(v)) def index(request):
if request.method=='GET':
#1.获取客户端cookie中的随机字符串
#2.去session中查找有没有随机字符串
#3.去session对应key的value中查找是否有username
v = request.session.get('username')
if v:
return render(request, 'index.html')
else:
return HttpResponse('登录失败') 问题:
Invalid HTTP_HOST header: '127.0.0.1:8000'. You may need to add '127.0.0.1' to ALLOWED_HOSTS.
解决方法:
myapp
settings.py
在ALLOWED_HOSTS = []里改成ALLOWED_HOSTS = ["127.0.0.1"]
四、详细cookie和session的区别
django上课笔记4-复习数据库操作-复习模板-Seccion-详细cookie和session的区别的更多相关文章
- python/数据库操作补充—模板—Session
python/数据库操作补充—模板—Session 一.创建一个app目录 在models.py只能类进行进行创建表 class Foo: xx= 字段(数据库数据类型) 字段类型 字符串 Email ...
- cookie和session的区别及在Django中应用
Django中Cookie和session应用 什么是cookie? cookie是客户端浏览器上的一个文件,以键值对进行保存,类似于字典的 {'key' : 'value'} ,与服务器端没有关系, ...
- Mysql数据库操作复习,增删改查
Mysql数据库 Apache(服务员) php(大厨) mysql(冰柜) Mysql是瑞典的mysqlAB公司开发的一款中小型关系型数据库管理系统. MysqlAB公司在2008年被S ...
- Django学习笔记〇四——数据库ORM的使用(有待修改)
Django框架基本上都是要和数据库结合使用的,我在以前讲过SQLAlchemy框架的使用,Django支持的不是SQLAlchemy,但是也内嵌了ORM框架,可以不需要直接面对数据库编程,而可以通过 ...
- Python学习笔记六:数据库操作
一:Python操作数据库的流程 二:开发环境准备 1:开发工具PyCharm 2:Python操作mysql的工具:需要安装Python-Mysql Connector,网址:https://sou ...
- Java 学习笔记(16)——Java数据库操作
数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...
- django上课笔记1-目录介绍-路由系统-ORM操作
一.Django目录介绍 django-admin startproject mysite # 创建名为mysite的项目 cd mysite # 切换到该目录下 python manage.py s ...
- Django(三) ORM 数据库操作
大纲 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段 ...
- Day 61 Django第二天 (orm数据库操作)
一.get请求和post请求 GET请求: 1. 浏览器请求一个页面 2. 搜索引擎检索关键字的时候 POST请求: 1. 浏览器向服务端提交数据,比如登录/注册等 二 . Django中的APP: ...
随机推荐
- ubuntu harddisk uuid already exists
就是virtualbox下先用u盘启动的虚拟机,把U盘的vhdk文件拷贝到本机,然后再启动,就有问题,提示什么uuid already exist 找了半天,网上基本都是说windows下如何用的.. ...
- BUPT复试专题—日期(2013)
题目描述 请你计算出第年月日是第X年的第几天.其中,1月1日是第一天,1月2日是第二天,以此类推. 计算时请注意闰年的影响.对于非整百年,年数能整除4是闰年,否则不是闰年:对于整百年,年数能整除400 ...
- BUPT复试专题—树查找(2011)
https://www.nowcoder.com/practice/9a10d5e7d99c45e2a462644d46c428e4?tpId=67&tqId=29641&rp=0&a ...
- Spring -- Bean自己主动装配&Bean之间关系&Bean的作用域
对于学习spring有帮助的站点:http://jinnianshilongnian.iteye.com/blog/1482071 Bean的自己主动装配 Spring IOC 容器能够自己主动装配 ...
- Effective C++ 43,44
43.明智地使用多继承. 多继承带来了极大的复杂性.最主要的一条就是二义性. 当派生类为多继承时,其多个基类有同名的成员时,就会出现二义性.通常要明白其使用哪个成员的.显式地限制修饰成员不仅非常笨拙, ...
- 【翻译自mos文章】怎么找到OGG Director Server使用的数据库和username?
APPLIES TO: Management Pack for Oracle GoldenGate - Version: 1.0.0.0 - Release: 1.0 Information in t ...
- python xmlrpc
rpc 协议 RPC = Remote Procedure Call Protocol,即远程过程调用协议. xml rpc 协议 使用http协议作为传输协议,使用xml文本传输命令和数据的一种协议 ...
- Android的Message Pool是个什么鬼,Message Pool会否引起OOM——源代码角度分析
引言 Android中,我们在线程之间通信传递通常採用Android的消息机制,而这机制传递的正是Message. 通常.我们使用Message.obtain()和Handler.obtainMess ...
- Filter注入对象
由于没有在web.xml文件中加上<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter ...
- Design Pattern 设计模式1 - Strategy 1
实现 : Defferent Heros attack Defferently. - 不同的英雄使用不用的招数 Strategy设计的思路: 基类A.更加小的基类B,新的继承类C: 1 从基类A中抽出 ...