• Django 的路由控制,视图以及模板


    URL配置就是Django所支撑网站的页面,它的本质就是URL与该URL调用的视图函数之间的映射表;

      我们一般用两种方式进行路由匹配,from Django.urls import path,re_path

      path对应的是相应的路径,也可以利用re_path的方式,它可以利用正则的方式进行匹配

      注意:

        如果要从URL里面捕获一个值,只需要在它两边放一个圆括号,它会自动形成一个参数,传进view

        不需要添加一个前导的反斜杠,因为每个URL都有, 

        每个正则表达式中前面的r''是可选的建议还是加上去,它会高数python这个字段的不需要进行转义

        有名分组:就是在路径进行正则匹配的时间通过?P<name>的方式给传入进行的值赋了一个名字,相当于关键字传参,视图层进行取值的时候,也要根据自己的命名去取

    反向解析:

      在使用Django 项目时,一个常见的需求是获得URL 的最终形式,以用于嵌入到生成的内容中(视图中和显示给用户的URL等)或者用于处理服务器端的导航(重定向等)。人们强烈希望不要硬编码这些URL(费力、不可扩展且容易产生错误)或者设计一种与URLconf 毫不相关的专门的URL 生成机制,因为这样容易导致一定程度上产生过期的URL。

      在需要URL 的地方,对于不同层级,Django 提供不同的工具用于URL 反查:

    • 在模板中:使用url 模板标签。
    • 在Python 代码中:使用from django.urls import reverse()函数

      反向解析是为了处理更名上面的业务运用场景,如果他的网站的后缀需要改动,那么就会牵扯到大量场景中需要把相应跳转页面端口全部从新更名,如果运用反向解析的方式,只要在回调视图函数后面,给属性name定一个值,然后把template里面使用a标签的时候,直接写name定义的名字就可以了

    因为利用name属性的时间,自己在urls中定义的name是没有作用域的,所有Gjango进行反解的时候要去应用命名空间.

    project的urls.py:

    urlpatterns = [
        re_path(r'^admin/', admin.site.urls),
        re_path(r'^app01/', include("app01.urls",namespace="app01")),
        re_path(r'^app02/', include("app02.urls",namespace="app02")),
    ]

    app01.urls:

    urlpatterns = [
        re_path(r'^index/', index,name="index"),
    ]

    app02.urls:

    urlpatterns = [
        re_path(r'^index/', index,name="index"),
    ]
    urlpatterns = [
        re_path(r'^index/', index,name="index"),
    ]

    app01.views:

    from django.core.urlresolvers import reverse
    
    def index(request):
    
        return  HttpResponse(reverse("app01:index"))

    app02.views:

    from django.core.urlresolvers import reverse
    
    def index(request):
    
        return  HttpResponse(reverse("app02:index"))

    Django里面的视图层:

    视图层里面有三种方式:render ,HTTPResponse,redirect

      render方法:里面可以有三个参数,request(用于生成请求体对象),template_name=要使用模板的完整名称,context默认是一个空字典,如果有值得话,会在模板页面将模板语法先渲染一下,最终渲染出一个HTML然后返回出去

      HTTPResponse:只有一个参数固定返回一个字段

      redirect:重定义函数,传递一个硬编码的URL,逻辑执行完之后,会跳转到URL路径下面

      request.method 获取请求体的请求方法

    模板层

    python的模板:HTML代码+模板语法

    在views中执行的python代码中,可以定义任意对象,字典,列表,集合都是可以的利用模板语法就可以直接进行传输进去 

    在views中里利用render方法,{{'name':name}},你传入什么格式在模板层你就利用那种方法进行获取相应的值.

    过滤器:在显示的时候,在模板层可以通过过滤器的方式对需要展示的内容进行定义,{{name|过滤条件}}

    模板的继承:

    Django方法中有一个非常强大的功能就是模板的复用,进行继承.模板继承中你可以创建一个主语版,会被重复使用的模板.并且在相应的内容区定义能够被模板覆盖的blocks.

    {% extends 'base.html'%}这句话的意思是告诉模板引擎,这个模板'继承'了另一个模板.当模板系统处理这个模板时,首先它会定位父模板,就会把base.html里面的代码全部copy了过来.然后它会注意base.HTML中的三个block标签,并用子模板中的内容来替换这些block.

  • 相关阅读:
    mysql 快速生成百万条测试数据
    解决mysql插入数据l出现"the table is full"的问题
    php 判断设备是手机还是平板还是pc
    golang格式化输出-fmt包用法详解
    阿里云用smtp无法发送邮件
    百度文本编辑器的toolbars属性值描述
    beego register db `default`, sql: unknown driver "mysql" (forgotten import?)
    MQ知识点汇总
    redis知识点汇总
    知识体系
  • 原文地址:https://www.cnblogs.com/lowen107/p/10224874.html
Copyright © 2020-2023  润新知