zoukankan      html  css  js  c++  java
  • 第二十一章 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})

  • 相关阅读:
    Python学习札记(十五) 高级特性1 切片
    LeetCode Longest Substring Without Repeating Characters
    Python学习札记(十四) Function4 递归函数 & Hanoi Tower
    single number和变体
    tusen 刷题
    实验室网站
    leetcode 76. Minimum Window Substring
    leetcode 4. Median of Two Sorted Arrays
    leetcode 200. Number of Islands 、694 Number of Distinct Islands 、695. Max Area of Island 、130. Surrounded Regions 、434. Number of Islands II(lintcode) 并查集 、178. Graph Valid Tree(lintcode)
    刷题注意事项
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/8283261.html
Copyright © 2011-2022 走看看