一、Django路由怎麼寫
Django路由的編寫是在項目的urls.py文件中進行的,該文件中包含了整個項目的路由配置信息。路由的格式為:path(route, view, kwargs=None, name=None)。
其中route參數表示匹配的URL路徑,view參數表示該路徑下對應的視圖函數,kwargs參數可選,是一個字典類型的參數,可以包含任意個關鍵字參數,作為視圖函數的參數傳遞;name參數可選,用於給URL定義一個名稱,以便在Django的其他地方使用,比如在模板中構造URL。
二、Django路由配置叫什麼名字
Django路由配置文件通常被命名為urls.py,可以位於項目的根目錄或者應用程序的子目錄中。在應用程序的子目錄中可以創建一個名為urls.py的文件來包含該應用程序的所有路由。
三、Django路由配置了但跳轉不了
若Django路由配置了但跳轉不了,常見的原因是沒有在視圖函數中返回HttpResponse或者render函數的調用。另外,一定要確保路徑匹配正確,包含斜杠或者沒有斜杠在Django路由匹配中是有區別的。
四、Django路由path
在Django 2.0之後,引入了path方法,替代了以前的re_path和url方法,具有更加簡潔明了的特點。使用path方法可以直接匹配URL路徑,不需要正則表達式。
示例代碼:
from django.urls import path from . import views urlpatterns = [ path('article//', views.article_year), ]
五、Django路由正則
Django路由使用正則表達式匹配URL,常用的正則表達式如下:
\d 匹配任意數字
\w 匹配任意數字/字母/下劃線
\+ 匹配左側的字符出現一次或多次
* 匹配左側的字符出現0次或多次
? 匹配左側的字符出現0次或1次
() 用來標記一個組的開始和結束位置
示例代碼:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^articles/(?P\d{4})/', views.article_year), re_path(r'^articles/(?P\w+)/', views.article_name), ]
六、Django路由配置
Django路由配置是指在urls.py文件中配置路由,以映射URL到視圖函數。通常路由配置會組成一個列表(英文名稱為urlpatterns),在Django的啟動時就會被加載並使用。當請求到來時,Django會按照 urlpatterns 列表的順序從上到下匹配 URL,使用第一個能夠匹配的視圖函數作為響應。
例如:
from django.urls import path from . import views urlpatterns = [ path('article//', views.article_year), path('article//', views.article_slug), ]
七、Django路由權限
Django路由權限指的是對路由設置權限,只有擁有相應權限的用戶才能訪問。舉個例子,在路由中添加login_required裝飾器可以讓用戶必須登錄才能訪問:
示例代碼:
from django.urls import path from django.contrib.auth.decorators import login_required from . import views app_name = 'blog' urlpatterns = [ path('', views.index, name='index'), path('/', login_required(views.ArticleDetailView.as_view()), name='detail'), ]
八、Django路由參數
Django路由參數指的是在URL中加入參數,用於調用視圖函數或者完成其他操作。Django支持兩種類型的參數:位置參數和關鍵字參數。位置參數使用?P進行定義,關鍵字參數使用?P<name=value>進行定義,參數名稱與參數值用=分開。
示例代碼:
from django.urls import path from . import views app_name = 'blog' urlpatterns = [ path('search/', views.search, name='search'), path('article//', views.article_year), path('article//', views.article_slug), path('login/', views.login, name='login'), ]
九、Django路由匹配原則
Django路由匹配原則遵循的是“先匹配長的一項”。如下所示,Django路由會優先匹配第2個路由,因為它的匹配規則比第1個路由匹配更長。
from django.urls import path from . import views urlpatterns = [ path('article//', views.article_year), path('article//', views.article_slug), ]
十、Django路由轉換器
Django路由轉換器是指變量,允許精細控制Django路由系統的匹配。轉換器在路由中用一對<angle brackets>括起來,如:<int:year>、<slug:slug>。常用的轉換器類型包括:str、int、slug、uuid、path和custom。如果需要自定義轉換器可以通過繼承Converter類來實現。
參考代碼
from django.urls import path, re_path from . import views app_name = 'blog' urlpatterns = [ path('', views.index, name='index'), path('search/', views.search, name='search'), path('tags/', views.TagListView.as_view(), name='tag_list'), path('article//', views.ArticleDetailView.as_view(), name='detail'), path('article//edit/', views.ArticleUpdateView.as_view(), name='edit'), path('article//delete/', views.ArticleDeleteView.as_view(), name='delete'), path('write/article/new/', views.ArticleCreateView.as_view(), name='create_article'), path('about/', views.about, name='about'), path('contact/', views.contact, name='contact'), re_path(r'^articles/(?P\d{4})/', views.article_year), re_path(r'^articles/(?P\w+)/', views.article_slug), ]
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/199583.html