• 巨蟒python全栈开发django4:url反向解析图解&&模板渲染2


    注意:前端有aaa变量,后端没有aaa变量,存在p标签,但是显示不出来

     

     有p标签,我们可以指定默认值,在没有其他内容的时候

    过滤器有60多种,有点多,用到的时候再记和查

    结果:

    显示是acd

    看长度

     

    查看文件大小:

     

    view.py文件中的

    name2='acd'

    html中

    <p>{{ name2|slice:'0:1' }}</p>

    结果:

    a  #注意这个也是顾头不顾尾

    cut测试:

    name3="I am donggua!"

    去掉空格:

    <p>{{ name3|cut:' ' }}</p>

    html中:

    <p>{{ name3|truncatechars:6 }}</p>

    结果:

    I a...   (3个点,也在6个字符之内)

    测试:
    <p>{{ name3|truncatewords:1 }}</p>
    结果:(以空格进行划分)
    I ...
    truncatechars是以字符划分
    truncatewords是以单词进行划分.

     

    上边浏览器中显示的只是字符串

    通过安全处理

    点击"你好2",回到最上边.

    2-2safe过滤

    safe是xss攻击,可能存在攻击,不停攻击,浏览器限制这种用户的行为,浏览器对提交的所有提交的内容,全部变成字符串.

    safe表示,我们这个标签是安全的,给我正常显示就可以了!!

    具体操作,见上边bbb.

    2-3for if with标签

     结果:

    翻转的过程:

     

    结果:

    结果:

    上边这个从1开始计数,三次循环得到下面的结果:(优点类似枚举)

    上边的方法表示从0开始

    反转

    判断是不是第一次(最后一次)循环first,last

    parentsloop(字典里边嵌套列表)

    结果:

    双循环+if判断

     

    在内层看外层的for循环

     

    代表第二层循环

     

     

    如果是个空列表

     显示的结果是:什么都不会显示的

     

     with:

    2-4csrf_token解释

    settings.py里边的,这是一个中间件安全认证机制 

    注意,要解开上边的中间件认证,

    输入用户名&&密码,提交

    目的:防止不良的请求,想办法应用上这个安全认证

    如何解除,这个安全认证机制???在form表单中加入即可

    {% csrf_token %}

    这样就可以成功通过了,具体加了什么呢?后台有地方加了这些键和值

    在后台存着这个东西,进行验证,是这个提交的.爬虫可以模拟请求也可以模拟post请求,必须按照人家正常的页面提交.

    他的地盘他做主,在后台某个位置,存在着和这个键值对相同的东西

    爬虫

    先写个认证

     下图说明,拿到了这个内容,但是这些内容禁止访问.

    如果去掉中间件认证机制,也就是注释掉,运行显示,登录成功

    每次刷新,是新的内容

     

    后边将cookie会涉及到,主要是这个东西,会保存在后台的某个位置,

    做爬虫我们可以考虑,先获取,在发送请求登录.

    2-5csrf_token图解

     

    2-6模板渲染

     好多页面都是一样的,我们怎么处理相同的东西???

    写商城,首页index,订单页,个人中心

    base.html 也就是母版页

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta http-equiv="content-Type" charset="UTF-8">
        <meta http-equiv="x-ua-compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width" ,initial-scale="1">
        <!--上边这个表示手机版的调整尺寸-->
        <!--上述2个meta标签"必须"放在最前面,任何其他内容都必须跟随其后-->
        <title>
            {% block title %}
                母版的头信息
            {% endblock %}
        </title>
        <style>
            body{
                padding: 0;
                margin: 0;
            }
            .nav{
                background-color: red;
                height: 40px;
            }
            .left_list div{
                width: 100px;
                height: 20px;
                background-color: pink;
                border-bottom: 1px solid black;
            }
            .left_list{
                float: left;
                width: 100px;
            }
            .content{
                float: right;
                width: 600px;
                height: 100px;
            }
        </style>
    </head>
    <body>
    <div class="nav">
    {#导航栏#}
        <a href="">新闻</a>
        <a href="">网页</a>
        <a href="">图片</a>
    </div>
    
    <div class="left_list">
        <div><a href="/index/">首页</a></div>
        <div><a href="/order/">订单页</a></div>
        <div><a href="/user/">个人中心</a></div>
    </div>
    
    <div class="content">
        {% block content %}
            母板预留的地方
        {% endblock %}
    </div>
    
    </body>
    </html>
    View Code

    index.html

    {% extends 'base.html' %}
    {#一句话继承母版页面#}
    {#继承的块是可以自定义的#}
    {% block title %}
        首页
    {% endblock %}
    
    {% block content %}
        <a href="">首页</a>
        <span>首页介绍</span>
    
    {% endblock %}
    View Code

    usercenter.html

    {% extends 'base.html' %}
    {#一句话继承母版页面#}
    {#继承的块是可以自定义的#}
    {% block title %}
        个人中心
    {% endblock %}
    {% block content %}
        个人中心页面
    {% endblock %}
    View Code

    order.html

    {% extends 'base.html' %}
    {#一句话继承母版页面,必须写在首行#}
    {#继承的块是可以自定义的#}
    {#可以多留一些钩子#}
    {% block title %}
        订单
    {% endblock %}
    {% block content %}
        订单页面
    {% endblock %}
    View Code

    1.继承必须写在首行

    2.钩子越多越好,越灵活

    如何保留母版中的内容?

     

    {{ block.super }}放在前面,就在前面显示,放在后边,就在后边显示

     3.不能重名

     4.

     

  • 相关阅读:
    asp.net页面生命周期追踪
    asp.net Forums 之配置,缓存,多数据访问
    沪江技术部程序员招聘试题,大家一起讨论一下。
    httpd does not appear to be running and proxying cobbler, or SELinux is in the way.
    网络知识OSI七层网络与TCP/IP五层网络架构及二层/三层网络
    python中用psutil模块,yagmail模块监控CPU、硬盘、内存使用,阈值后发送邮件
    Linux中访问Apache报403错误处理方法
    centos7的启动流程
    pycharm介绍
    监测NGINX服务的shell脚本
  • 原文地址:https://www.cnblogs.com/studybrother/p/10445274.html
Copyright © 2020-2023  润新知