zoukankan      html  css  js  c++  java
  • 03.django升级打怪学习记

    00.模板

    在Django框架中,模板是可以帮助开发者快速生成呈现给用户页面的工具。

    模板处理:

    a.加载

    b.渲染

    模板主要有两个部分

    a.HTML静态代码

    b.动态插入的代码段(挖坑,填坑)

     

    01.语法

    a.模板中的点语法:grades grade

    属性或方法:grade.gname

    索引:grades.0.gname

     

    b.模板中的标签:语法{% tag %}

    作用:b1.加载外部传入的变量

    b2.在输出中创建文本

    b3.控制循环或逻辑

    cif语句

    {% 表达式 %}

    语句

    {% elif %}

    语句

    {% else %}

    语句

    {% endif% }

     

    d.for语句

    {% for 变量 in 列表 %}

    语句

    {% empty %}

    语句

    {% endfor %}

     

     

    e.注释

    单行注释

     

    多行注释

     

    f.过滤器{{ var | 过滤器}}

    作用:在变量显示前修改

    add {{p.page | add:5}}

    没有减法过滤器,但是假发里可以加负数

    {{p.page | add: -5}}

    lower

    {{p.pname|lower}}

    join:传递参数

    {{students|join '='}}

    {{var|defualt value}}

    dateVal:指定格式转换日期为字符串,处理时间的

    {{dateVal | data:'y-m-d'}}

    g.html转义:将接受到的数据当成普通字符串处理还是当成HTML代码来渲染的一个问题

    html:{{code|safe}}

    {% autoescape off %}

    code

    {% endautoesape%}

     

    {% autoescape on %}

    code

    {% endautoesape%}

     

     

    05.视图概述

    结构标签

    *block

    用来规划我们的布局(挖坑)

    首次出现,代表规划

    第二次出现,代表填充以前的规划

     

    第三次出现,代表填充以前的规划,默认动作式覆盖

    *如果不想覆盖,可以添加{{block.super}}

    *这样实现增量操作

    super:代表继承父类或超类中

     

    *extends

    继承

    可以获取符模板钟的所有结构

     

     

    *block+entends

    化整为零

    *include

    *包含

    *可以将页面作为一部分,嵌入到其他页面中

     

     

    *include +block(由零聚一)

    *三个标签也可以混用,尽量不要使用include

    *如果我们继承自一个符模板,自模板自己直接重写页面结构式不生效的,只能在既有坑中进行填充。

     

     

    urls

    *路由器

    ——按照列表的书写顺序进行匹配的

    ——从上到下匹配,没有最优匹配的概念

    *路由规则编写

    ——我们通常直接以结尾处直接添加反斜线

    ——参数

    路径参数(位置参数——按照书写顺序进行匹配)

    关键字参数(按照参数名称匹配,和顺序就无关了)

    参数个数必须和视图函数参数个数一致(除默认的request以外)

     

    *路由器中的参数使用()进行获取

    ——一个圆括号对应视图函数中的一个参数

     

     

     

     

     

    06.视图

    视图的本质就是一个Python中的函数

    视图的响应分为两大类:

    以JSON数据形式返回

    以网页的形势返回:重定向到另一个网页/错误视图(40x,50x)

    视图响应过程:浏览器输入->django获取信息并去掉Ip端口,

    剩下路径->url路由匹配->视图响应->回馈到浏览器

     

    07.URL反向解析

    url反向解析

    在根urls中:

    path('view/',include('view.learn', namespace='view'))

    在子urls中

    path('hello/', views.hello, name=‘sayhello’)

    使用反向解析优点:如果在视图,模板中使用硬编码连接,在url配置发生改变时,需要变更代码非常多,这样导致我们的代码结构不是很容易维护,使用反向解析可以提高我们代码的扩展性和课维护性。

     

    解决问题: https://docs.djangoproject.com/en/3.0/topics/http/urls/

    Reversing namespaced URLs

    反向解析:

    *根据路由中注册的namespace和在子路由中注册name,这两个参数来动态获取我们的路径

    *在模板中使用{% url`namesspace'}

     

    错误页面定制

    *在错误中重写对应错误状态码的页面

    *关闭Debug

    *实现原则(就近原则)

     

     

    07.HttpRequest

     

    -------------------------------------------

    双R

    *Request

    内置属性(method/path/GET/POST/META)

    *Response

     

     

    备注:

    静态资源:

    *动静分离

    *创建静态文件夹

    *在setting中注册STATICFILES_DIRS=[]

    *在模板中使用

    ——先加载静态资源(%load static %)

    ——使用{% static xxx %} xxx相对路径

    *坑点

    ——仅在debug模式可以使用

    ——以后需要自己单独处理

     

    备注:pycharm手动修改py文件才会重载,修改html不会重载

  • 相关阅读:
    PIL.Image 与 base64互转
    python pytorch ssd网络
    mysql 的左连接、又连接、内连接详细介绍
    base64图片数据类型转numpy的ndarray矩阵类型数据
    kettle学习资料
    kettle 连接 mysql8.0 报错的解决办法 org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to connect to the database Error connecting to database: (using class org.gjt.mm.mysql.
    python pandas 自动生成批量测试数据插入数据库 mysql
    finereport点击图表钻取到明细表包括参数传递
    finereport连接mysql8.0的解决办法
    kettle7.0 Windows10 mysql8.0 连接mysql驱动报错,问题解决
  • 原文地址:https://www.cnblogs.com/aixiaoxiaoyu/p/12178031.html
Copyright © 2011-2022 走看看