簡體   English   中英

Django 2.0中的網址映射

[英]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')

謝謝

方法1

通過使用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')
]

方法2

您可以使用行為與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')
]


方法3

從文檔中,( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM