[英]Url mapping in django 2.0
所以從Django 1.9遷移到Django 2對我來說並不順利。 我已經注意到了網址格式。
Django 2.0使用path
而不是URL,如何將這些URL模式轉換為與Django 2.0兼容?
url(r'^post/(?<pk>\\d+)$',)views.PostDetailView.as_view(), name ='post_detail'),
url('account/login/', views.login, name ='login')
謝謝
通過使用path()
from django.urls import path
urlpatterns = [
path('post/<int:pk>/', views.PostDetailView.as_view(), name='post_detail'),
path('account/login/', views.login, name='login')
]
您可以使用行為與url()
相同的re_path()
from django.urls import re_path
urlpatterns = [
re_path(r'^post/(?<pk>\d+)$', views.PostDetailView.as_view(), name='post_detail'),
re_path(r'account/login/', views.login, name='login')
]
從文檔中,( Django 2.0的新功能 )
以前版本中的
django.conf.urls.url()
函數現在可以作為django.urls.re_path()
。 保留舊位置是為了向后兼容,而不即將淘汰。 現在可以from django.urls import include, path, re_path
舊的django.conf.urls.include()
函數from django.urls
因此您可以from django.urls import include, path, re_path
URLconfs中的from django.urls import include, path, re_path
。
因此,您可以在舊版本的django 2.x
使用相同的url()
函數(直到完全剝奪為止),如下所示:
from django.conf.urls import url
urlpatterns = [
url(r'^post/(?<pk>\d+)$', views.PostDetailView.as_view(), name='post_detail'),
url('account/login/', views.login, name='login')
]
Django 2.0發行說明涵蓋了您的情況(不完全是,但無論如何)-您的網址可以按以下方式重寫(假設您的意思是(?P<pk>\\d+)
-注意緊跟在?
之后的P
):
path('post/<int:pk>/', views.PostDetailView.as_view(), name='post_detail'),
path('account/login/', views.login, name='login')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.