django-urls(路由)

來源:互聯網
上載者:User

標籤: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.py2 from django.shortcuts import reverse3 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 #匯入include2 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(路由)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.