前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第二十一章 Django的分页与cookie

第二十一章 Django的分页与cookie

作者头像
玩蛇的胖纸
发布2018-06-08 13:10:10
5180
发布2018-06-08 13:10:10
举报
文章被收录于专栏:雪胖纸的玩蛇日常

第二十一章 Django的分页与cookie

第一课 模板

1.模板的继承

在Template目录下新建模板master.html

代码语言:javascript
复制
<!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

代码语言:javascript
复制
{% 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

代码语言:javascript
复制
<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代码:

代码语言:javascript
复制
<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中代码:

代码语言:javascript
复制
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})

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档