• 第二十一章 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})

  • 相关阅读:
    Codeforces Round #717 (Div. 2)
    Codeforces Round #716 (Div. 2)
    atCoder Regular Contest 117
    Codeforces Round #715 (Div. 2)
    牛客挑战赛49
    从零开始搭建webpack应用
    扫盲:npm
    MYSQL安装
    Int和integer区别
    关于JDK配置以及DOS窗口执行指令
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/8283261.html
Copyright © 2020-2023  润新知