django-urls(路由)

Posted baird

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-urls(路由)相关的知识,希望对你有一定的参考价值。

Django的路由入口是urls.pyurlpatterns参数。
通过查找urlpatterns中的对应关系分发请求到各个视图函数或类。

一、分发请求到函数
1、应在对应app的views.py中定义好处理函数,如:

1 def business_new(request):
2     return HttpResponse("Django")

 

2、在urls.py中导入对应的模块

1 from app1 import views

 

3、在urlpatterns中加入对应关系

1 path(app1/,views.business_new)  #fbv  function base view

 

二、分发请求到类
1、应在对应app的views.py中定义好处理类,如:

 1 from django.views import View
 2 class Blog(View):   #应继承View
 3     def dispatch(self, request, *args, **kwargs):
 4         print("before")
 5         result = super(Blog,self).dispatch(request, *args, **kwargs)   #根据请求方式分发
 6         print("after")
 7         return result
 8 
 9     def get(self,request):
10         return HttpResponse("BLOG")
11 
12     def post(self,request):
13         pass

 

2、在urls.py中导入对应的模块

1 from app1 import views

 

3、在urlpatterns中加入对应关系

1 path(blog/,views.Blog.as_view()),     #CBV    class base view

 

三、路由的特殊写法
1、使用正则,如:

1 re_path(article-(d+)-(d+)/,views.article)
2 re_path(article-(?P<article_type_id>d+)-(?P<category_id>d+)/,views.article)  #分组

 

可同过形如:address/article-1-2 的方式访问
方法二会将1传给article_type_id,2传给category_id

使用正则时应导入re_path方法

1 from django.urls import path,re_path

 

2、name属性,如

1 re_path(article-(?P<article_type_id>d+)-(?P<category_id>d+)/,views.article,name=article)

 

设置该属性后可以通过reverse方法反向生成url,如:

1 file: views.py
2 from django.shortcuts import reverse
3 def article(request,**kwargs):
4     ......
5     url = reverse(article,kwargs=kwargs)
6         print(url)
7     ......

 

3、分发到app的urls,如:

1 from django.urls import path,include #导入include
2 
3 urlpatterns = [
4     path(admin/, admin.site.urls),
5     path(app1/,include(app1.url))
6 ]

此时访问形如 address/app1/XXX 的url时会进入app1 -> url.py 中查找urlpatterns






以上是关于django-urls(路由)的主要内容,如果未能解决你的问题,请参考以下文章

Django-urls设计

django-urls 浏览器预览错误

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段