码迷,mamicode.com
首页 > Web开发 > 详细

django-urls(路由)

时间:2018-08-27 16:03:44      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:for   cut   正则   eve   rev   请求方式   blog   ESS   查找   

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(路由)

标签:for   cut   正则   eve   rev   请求方式   blog   ESS   查找   

原文地址:https://www.cnblogs.com/baird/p/9542586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!