• Django 路由详解(一)


    路由规则

    完整的路由包含:路由地址、视图函数或视图类、可选变量、路由命名。其中必须要有的信息:路由地址、视图函数或视图类。路由地址就是我们访问的地址,视图函数(或视图类)即App应用目录下views.py文件中定义的函数或类。

    在创建项目时,会自动生成一个urls.py的路由配置文件,而自己在项目下创建的App应用默认没有urls.py配置文件,通常情况下,我们会每个App下手动新建一个urls.py的配置文件,来管理该App的路由地址。其工作原理如下:

    1. 运行Django项目时,Django从项目下urls.py找到各个App所定义的路由信息,生成完整的路由列表。
    2. 当用户在浏览器上访问某个路由地址时,Django就会收到该用户的请求信息。
    3. Django从当前请求信息获取路由信息,并在路由列表里匹配相应的路由信息,再执行路由所指向的视图函数或视图类,通过视图函数或视图类对业务逻辑或数据进行处理后返回给前端,从而完成整个请求响应过程。

    这种路由设计模式,在项目文件夹下urls.py代码如下:

    from django.contrib import admin
    from django.urls import path,include
    
    urlpatterns = [
        #指向内置Admin后台系统的路由文件sites.py
        path('admin/', admin.site.urls),
        #指向myapp应用内的路由配置文件urls.py
        path("",include("myapp.urls")),
    
    ]
    • from django.contrib import admin :导入内置Admin功能模块。
    • from django.urls import path,include :导入Django的路由函数模块。
    • urlpatterns: 代表整个项目的路由集合,以列表格式表示,每个元素代表一条路由信息。
    • path("admin/", admin.site.urls): 设定Admin的路由信息。“admin/”代表127.0.0.1:8000/admin 的路由地址,admin后面的斜杠是路径分隔符,其作用等同于计算机中文件目录的斜杠符号;admin.site.urls指向内置Admin 功能所自定义的路由信息,可以在python目录:Python39\Lib\site-packages\django\contrib\admin\sites.py找到具体定义过程。
    • path("" , include("myapp.urls")): 路由地址为“\”,即127.0.0.1:8000,通常是网站的首页;路由函数include是将该路由信息分发给myapp的urls.py处理。

    由于首页地址分发给myapp的urls.py处理,因此下一步需要对index的urls.py编写路由信息,代码如下:

    #myapp urls.py
    from django.urls import path,re_path
    from myapp.views import myapp_index
    
    urlpatterns = {
        #配置myapp应用路由地址,指向myapp的views.py中的视图函数myapp_index
        path("",myapp_index)
    }

    在myapp的urls.py中,导入views.py视图中的函数myapp_index,并且设置默认访问地址,指向myapp_index 视图函数。

    下面是myapp应用下views.py中编写myapp_index函数的处理过程:

    from django.shortcuts import render
    # Create your views here.
    
    def myapp_index(request):
        value = "这是myapp应用的myapp_index视图"
        content = {
            "info" :value
            }
        return render(request,"index.html",content)

    myapp_index函数必须设置一个参数,参数命名不固定,通常设置为request,代表当前用户的请求对象,该请求对象包含当前请求的用户名、请求内容和请求方式等。视图函数执行完成后必须使用return将处理结果返回,否则程序会抛出异常信息。

    修改index.html模板的内容,让浏览器打印info变量的内容:

    <html lang="en">
        <head>
            <mete charset="utf-8"></mete>
            <title>hello word</title>
        </head>
    
    <body>
        <p>{{info}}</p>
    </body>
    </html>

    在浏览器里访问http://127.0.0.1:8000/,结果如下:

     补充:当前启动项目时,Django会从配置文件settings.py读取属性ROOT_URLCONF的信息,默认值为:MyDjango.urls,其代表MyDjango文件夹的urls.py文件,然后根据ROOT_URLCONF的值生成整个项目的路由列表。

     

  • 相关阅读:
    Cryptography中的对称密钥加解密:fernet算法探究
    HTTPS的工作原理
    最近要写的博客
    浅谈路由器软硬件架构
    组管理、权限管理、定时任务调度、磁盘分区
    matplotlib数据可视化
    tensorflow实现简单的卷积神经网络
    tensorflow实现简单的感知机
    tensorflow实现简单的自编码器
    区域生长算法(手动选取种子点)MATLAB
  • 原文地址:https://www.cnblogs.com/JcHome/p/16065151.html
Copyright © 2020-2023  润新知