第二十一章 Django的分页与cookie
第二十一章 Django的分页与cookie
第一课 模板
1.模板的继承
在Template目录下新建模板master.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="/static/commons.css">
<style>
.pg-header{
height:48px;
background-color: cornflowerblue;
color: red;
}
</style>
{% block css %}{% endblock %}
</head>
<body>
<div class="pg-header">小男孩管理</div>
{% block content %}{% endblock %}
<script src="/static/jquery.js"></script>
{% block js %}{% endblock %}
</body>
</html>
新建tpl1.html
{% extends 'master.html' %}
{% block title %}用户管理{% endblock %}
{% block content %}
<h1>用户管理</h1>
<ul>
{% for i in u %}
<li>{{ i }}</li>
{% endfor %}
</ul>
{% endblock %}
{% block css %}
<style>
body{
background-color: red;
}
</style>
{% endblock %}
2.模板的导入
新建tag.html
<form>
<input type="text" name="" id="1">
<input type="submit" value="sub">
</form>
在tpl1.html中:
{% include 'tag.html' %}
第二课 自定义函数
1.simple_tag:
1.app下创建templatetags目录
2.任意xxoo.py文件
3.from django import template 创建template对象 register=template.Library()
4.@register.simple_tag
def func(arg1,arg2...):
return 'aagagnaads...'
5.settings中注册app
6.html文件顶部{% load xxoo %}
7.{% 函数名 arg1 arg2 %}
缺点:不能作为if条件
优点:参数任意
2.filter:
1.app下创建templatetags目录
2.任意xxoo.py文件
3.from django import template 创建template对象 register=template.Library()
4.@register.simple_tag
def func(arg1,arg2): #参数只能是两个!
return 'aagagnaads...'
5.settings中注册app
6.html文件顶部{% load xxoo %}
7.{{参数1|函数名:参数2}}
缺点:参数限制 引用时不能加空格
优点:能作为if条件
第三课 分页
1.防止xss攻击(默认不执行包含代码的字符串):
1.在前端:{{ page_str|safe}}
2.在后端:
from django.utils.safestring import mark_safe
page_str01 = """..."""
page_str01=mark_safe(page_str01)
2.(使用分页模块)
第四课 cookie和装饰器
cookie是客户端浏览器上的一个文件键值对{'k1':'v1',....}
示例1:
urls.py中添加路径:
path('login/',views.login),
path('index/',views.index),
templates中新建登录页面login.html和主页index.html
login.html代码:
<form action="/login/" method="post">
用户名:<input type="text" name="username">
密码:<input type="password" name="pwd">
<input type="submit" value="提交">
</form>
index.html代码:
<h1>欢迎登陆:{{ k }}</h1>
views.py中代码:
user_info={
'xiaoming':'123',
'xiaohong':'321',
}
def login(req):
if req.method=='GET':
return render(req,'login.html')
if req.method=='POST':
u=req.POST.get('username')
v=req.POST.get('pwd')
if u in user_info:
if user_info[u]==v:
res=redirect('/index/')
res.set_cookie('username111',u,max_age=5)
#5代表5秒钟后清除cookie,不填则关闭浏览器清除cookie
return res
else:
return render(req,'login.html')
def index(req):
v=req.COOKIES.get('username111')
if not v:
return redirect('/login/')
else:
return render(req,'index.html', {'k': v})
cookie加密(浏览器自动给解密了,没毛用):
获取cookie:
req.COOKIES.get('...')
u=req.get_signed_cookie('pwd',salt='abcd')
设置cookie:
req.set_cookie('...')
res.set_signed_cookie('pwd',v,salt='abcd')
装饰器:
def auth(func):
def inner(req,*args,**kwargs):
v=req.COOKIES.get('username111')
if not v:
return redirect('/login/')
return func(req,*args,**kwargs)
return inner
@auth
def index(req):
v = req.COOKIES.get('username111')
return render(req,'index.html', {'k': v})
第二十一章 Django的分页与cookie第一课 模板1.模板的继承在Template目录下新建模板master.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>{% block title %}{% endblock %}</title><link rel="stylesheet" href="/static/commons.css"><style>.pg-header{height:48px;background-color: cornflowerblue;color: red;}</style>{% block css %}{% endblock %}</head><body><div class="pg-header">小男孩管理</div>{% block content %}{% endblock %}<script src="/static/jquery.js"></script>{% block js %}{% endblock %}</body></html>新建tpl1.html{% extends 'master.html' %}{% block title %}用户管理{% endblock %}{% block content %}<h1>用户管理</h1><ul>{% for i in u %}<li>{{ i }}</li>{% endfor %}</ul>{% endblock %}{% block css %}<style>body{background-color: red;}</style>{% endblock %}2.模板的导入新建tag.html<form><input type="text" name="" id="1"><input type="submit" value="sub"></form>在tpl1.html中:{% include 'tag.html' %}第二课 自定义函数1.simple_tag:1.app下创建templatetags目录2.任意xxoo.py文件3.from django import template 创建template对象 register=template.Library()4.@register.simple_tag def func(arg1,arg2...):return 'aagagnaads...'5.settings中注册app6.html文件顶部{% load xxoo %}7.{% 函数名 arg1 arg2 %}缺点:不能作为if条件优点:参数任意2.filter:1.app下创建templatetags目录2.任意xxoo.py文件3.from django import template 创建template对象 register=template.Library()4.@register.simple_tag def func(arg1,arg2): #参数只能是两个!return 'aagagnaads...'5.settings中注册app6.html文件顶部{% load xxoo %}7.{{参数1|函数名:参数2}}缺点:参数限制 引用时不能加空格优点:能作为if条件第三课 分页1.防止xss攻击(默认不执行包含代码的字符串):1.在前端:{{ page_str|safe}}2.在后端:from django.utils.safestring import mark_safepage_str01 = """..."""page_str01=mark_safe(page_str01)2.(使用分页模块)第四课 cookie和装饰器cookie是客户端浏览器上的一个文件键值对{'k1':'v1',....}示例1:urls.py中添加路径:path('login/',views.login),path('index/',views.index),templates中新建登录页面login.html和主页index.htmllogin.html代码:<form action="/login/" method="post">用户名:<input type="text" name="username">密码:<input type="password" name="pwd"><input type="submit" value="提交"></form>index.html代码:<h1>欢迎登陆:{{ k }}</h1>views.py中代码:user_info={'xiaoming':'123','xiaohong':'321',}def login(req):if req.method=='GET':return render(req,'login.html')if req.method=='POST':u=req.POST.get('username')v=req.POST.get('pwd')
if u in user_info:if user_info[u]==v:res=redirect('/index/')res.set_cookie('username111',u,max_age=5)#5代表5秒钟后清除cookie,不填则关闭浏览器清除cookiereturn reselse:return render(req,'login.html')def index(req):v=req.COOKIES.get('username111')if not v:return redirect('/login/')else:return render(req,'index.html', {'k': v})cookie加密(浏览器自动给解密了,没毛用):获取cookie:req.COOKIES.get('...')u=req.get_signed_cookie('pwd',salt='abcd')设置cookie:req.set_cookie('...')res.set_signed_cookie('pwd',v,salt='abcd')装饰器:def auth(func):def inner(req,*args,**kwargs):v=req.COOKIES.get('username111')if not v:return redirect('/login/')return func(req,*args,**kwargs)return inner@authdef index(req):v = req.COOKIES.get('username111')return render(req,'index.html', {'k': v})
第二十一章 Django的分页与cookie的更多相关文章
- JavaScript高级程序设计:第二十一章
第二十一章 Ajax与Comet 一.XMLHttpRequest对象 1.XHT的用法 在使用XHR对象时,要调用的第一个方法时open( ),它接受3个参数:要发送的请求的类型.请求的URL和表示 ...
- Flask 教程 第二十一章:用户通知
本文翻译自The Flask Mega-Tutorial Part XXI: User Notifications 这是Flask Mega-Tutorial系列的第二十一章,我将添加一个私有消息功能 ...
- Gradle 1.12用户指南翻译——第二十一章. Gradle 插件
昨天晚上只顾着和女朋友看<匆匆那年>电视剧的最后几集,所以说好的Android文档<Gradle 插件用户指南>第五章自然也没翻译多少.所以今天也发不了第五章的翻译了,就发几个 ...
- “全栈2019”Java多线程第二十一章:同步代码块产生死锁的例子
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java异常第二十一章:finally不被执行的情况
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- “全栈2019”Java第二十一章:流程控制语句中的决策语句if
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(二) controller
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 开涛shiro教程-第二十一章-授予身份与切换身份(二) 1.回顾 ...
- 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(一) table、entity、service、dao
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第二十一章 授予身份与切换身份(一) 1.使用场景 某个领导因为某 ...
- python 教程 第二十一章、 扩展Python
第二十一章. 扩展Python /* D:\Python27\Lib\Extest-1.0\Extest2.c */ #include <stdio.h> #include <std ...
随机推荐
- 五、Html表单标签
表单,表单控件的主要作用就是收集用户体验,当用户提交表单时,用户输入的内容将作为请求参数提交到远程服务器. 1,form标签 <form>:创建表单,该元素不会生成可视化的界面,但是其他控 ...
- Git 生成 SSH 公钥
2018-01-05 11:24:04 许多 Git 服务器都使用 SSH 公钥进行认证. 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份. 这个过程在所有 ...
- python 字典操作方法详解
字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 注意,浮点数比较很不精确, ...
- Linux下查找大文件以及目录
转自:http://www.cnblogs.com/kerrycode/p/4391859.html 在Windows系统中,我们可以使用TreeSize工具查找一些大文件或文件夹,非常的方便高效,在 ...
- 查询集API -- Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- ASP.NET没有魔法——ASP.NET MVC 模型验证
在前面的文章中介绍了用户的注册及登录功能,在注册用户时可以通过代码的形式限制用户名及密码的格式,如果不符合要求那么就无法完成操作,如下图: 该功能的原理是Identity基于的Entity Frame ...
- JavaScript转unix时间戳
由于 unix 的时间戳是10位不带毫秒的,所以前端获取到时间戳之后需要做一下处理,才能获取正确的时间. // 假设这里是从服务端获取到的时间戳 var unixTime = data.time; / ...
- centos6.8 安装gitlab记录
sudo yum install -y curl policycoreutils-python openssh-server cronie sudo lokkit -s http -s ssh sud ...
- Hadoop学习笔记一
云帆大数据视频学习笔记,记录如下. 一.主机名设置的规范 /etc/hosts文件中添加如下的记录: 192.168.1.128 hadoop-yarn.cloudyhadoop.com had-ya ...
- CF154D. Flatland Fencing [博弈论 对称 平局]
传送门 题意: 背景是$knights' tournament$,好棒的样子! 这道题不一样很恶心的地方就是有平局的存在 首先判断能不能一步杀 不能的话,如果可以走$0$步或者$a,b$一负一正那么一 ...