Django之路由系统

前言:

Django的工作流程

1、客户端发送请求到达 URL 
2、路由系统 把客户端请求转发给请求函数 
3、视图函数 使用原生SQL或者ORM去数据库拿到数据进行渲染(模板+数据渲染)
4、return 返回给客户端

Django project目录中的urls.py文件中 记录了 可以访问到该站点的url 和 视图函数的对应关系,神似路由器中的路由表,顾淫王赐名----->路由系统;

本文主要介绍 Django路由系统(此乃淫王 赐名,暂且这样称呼!)

一、普通路由系统

1个URL对应1个视图函数

from django.conf.urls import url
from django.contrib import admin
from APP import view
urlpatterns = [
    url(r‘^modal/‘,view.modal),         url(r‘^域名‘,对应的处理函数) 注意不要忘了写 ^ 表示正则匹配以。。开头的URL
    url(r‘^modal_add/‘,view.modal_add),
    url(r‘^modal_del/‘,view.modal_del),
    url(r‘^modal_edit/‘,view.modal_edit),
    ]

二、动态路由  

动态路由系统:在普通路由系统的基础上 加入了 正则表匹配

注意事项:按位置,和按关键字路由系统只能用1种,不能混合使用;

1、按正则位置 匹配url的动态路由系统

from django.conf.urls import url,include
from django.contrib import admin
from app1 import views
urlpatterns = [
    url(r‘^index/(\w+)/(\w+)/‘,views.index2),  #酱紫的话客户端 输入:http://127.0.0.1:8000/index/a/b/也可以访问到该站点
    url(r‘^‘,views.error)
             ]

在视图函数定义2个参数, 接收 2个正则表达式匹配到的后缀;

def index(request,a1,a2):
    print(a1,a2)  #打印参数a1,a2 就是 2个正则表达式匹配到的结果
#注意如果按位置传参的动态路由系统,必须在视图函数添加对应的参数接收!

2、按正则关键字 匹配url的动态路由系统

from django.conf.urls import url,include
from django.contrib import admin
from app1 import views
urlpatterns = [
 url(r‘^index/(P<n1>\w+)/(P<n2>\w+)/‘,views.index,name="zhanggen"),
 url(r‘^‘,views.error),
]
#注意如果在路由系统正则内部定义了关键字n1,n2,视图函数接收参数也必须是 n1,n2;

在视图函数定义2个关键字参数, 接收 2个正则表达式匹配到的后缀;

def index(request,n1,n2):
    print(n1,n2)  #注意必须和 路由系统中的一致
    return  HttpResponse(‘OK‘)

补充:

PS:
终止符:^edit$  可以精确限制匹配URL的后缀内容
伪静态:url(r‘^edit/(\w+).html$‘, views.edit)  装作成静态网站的url可以 提高 SEO高权重   百度排名靠前

三、路由分发

1个Django 项目里面有多个APP目录大家共有一个 url容易造成混淆,于是路由分发让每个APP的拥有了自己单独的url;

from django.conf.urls import url,include
from django.contrib import admin
from app1 import views
urlpatterns = [
     url(r‘^app1/‘,include(‘app1.urls‘)),
     url(r‘^app2/‘,include(‘app1.urls‘)),  #注意include的是字符串形式的 文件路径;
     url(r‘^‘,views.error),

                     ]

酱紫就可以在每个 Django目录下面写自己的 URL了

四、路由别名(应用站点权限管理)

给Django路由系统URL--视图函数对应关系命个名,然后在Python和模板中reverse、usl 反生成 访问该站点URL

作用:给路由系统中URL定义别名,通过别名反生出URL可以在Python和模板URL方便使用

from django.conf.urls import url,include
from django.contrib import admin
from app1 import views
urlpatterns = [
    url(r‘^index/(?P<n1>\w+)/(?P<n2>\w+)/‘,views.index,name="alex"), 给这个URL起别名 alex
    url(r‘^‘,views.error),             ]

在视图函数使用 reverse("别名", args=(1, 2)) 反生 位置参数动态路由的 别名

def index(request,n1,n2):
    print(reverse("zhanggen", args=(1, 2)))
    return render(request,‘index.html‘,{‘i‘:1,‘i1‘:2})
    

在视图函数使用 reverse("别名",kwargs={"关键字参数":1,"关键字参数":2 }反生 关键字参数动态路由的 别名

def index(request,n1,n2):
    print(reverse("zhanggen",kwargs={"n1":1,"n2":2 }))
    return render(request,‘index.html‘,{‘i‘:1,‘i1‘:2})
 

在模板中反生 URL

注意 在视图函数中  return render(request,‘index.html‘,{‘i‘:1,‘i1‘:2})

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>{{ i }}</p>
<p>{% url "zhanggen" i i1%}</p>
</body>
</html>
时间: 2024-10-21 16:41:28

Django之路由系统的相关文章

Django之 路由系统

Django的路由系统 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. 基本格式 ''' urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说明: 一个正则表达式字符串 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 可选的要传递给视图函数的默认参数(字典形式) 一个

Django 的 路由系统

Django 的路由系统 URL 配置(URLconf)就像Django 锁支撑网站的目录. 它的本质就是URL 与要为该URL 调用的视图函数之间的映射表. 你就是以这种方式告诉Django, 对于这个URL 调用这段代码,  对于那个URL 调用那段代码. URLconf配置 基本格式: from django.conf.urls import url urlpatterns= [ url(正则表达式,views视图函数, 参数, 别名) ] 注意: Django 2.0版本中的路由已经替换

Django - - 基础 - - Django的路由系统

模板 Django的路由系统 URLconf配置 正则表达式详解 分组命名匹配 传递额外的参数给视图函数(了解) 命名URL和URL反向解析 命名空间模式 1, Django的路由系统 Django 1.11版本 URLConf官方文档:https://docs.djangoproject.com/en/1.11/topics/http/urls/ URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 1.1 URLconf配

python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] ? 正则表达式: 一个正则表达式字符串 views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数: 可选的要传递给视图函数的默认参数(字典形式) 别名: 一个可选的name参数 12.361 路由正则表达式 from django.conf.urls imp

django的路由系统

在django生成的工程项目文件中urls.py文件用于指定路由信息 该文件默认导入以下模块 from confimport from import admin from confimport url,include 默认包含一个路由信息 r'^admin/'site.urls), 一个工程至少要包含一个app,而django中的mtv模式,view层相当于视图控制层,即相当于mvc中的controller,template相当于视图层,model层为数据处理层,当请求到达时将到时达指定的vie

五、Django之路由系统

1.普通路由匹配 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:它就是以这种方式告诉Django,用哪个URL调用哪段代码.URL的加载是从配置文件中开始. urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说明: 一个正则表达式字符串 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 可选的要传递给视图函数的默认参数(字典形式) 一个可选的nam

Django进阶-路由系统

概述 URL配置就像Django所支撑网站的目录 本质:URL与视图函数的映射表 Django2.0 from django.urls import path url 换成了 path 基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 正则表达式: 一个正则表达式字符串 views视图函数: 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数: 可选的要传递

Django -- 路由系统

Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive), path('articles/<int:year>/<int:month>/<slug:sl

Django的View(视图)和路由系统

Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面.除此之外没有更多的要求了--可以说"没有什么神奇的地方".为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.