如何在路径(django 2.0)上为django中的* item * _id创建一个url模式

时间:2018-02-01 05:10:51

标签: python django

这是我的代码

from django.urls import path

urlpatterns = [
# /audios/
path('', views.audio ),

# /audios/4344/
path('(<record_id>[0-9]+)/', views.record_detail),
]

请有人帮帮忙

3 个答案:

答案 0 :(得分:1)

Django 2.0带来了通过路径为网址模式定义新方式的新更新。在新的网址格式中,您无需在正则表达式中定义网址(请参阅第3个网址格式)。 Refer

但你也可以像我们在django&lt;中定义的那样编写url模式。 2. 0 re_path ,可在 django.urls refer

中找到

或者您可以使用旧的django样式来定义在 django.conf.urls 中定义的url模式,它可以帮助您为网址定义重新模式。

from django.urls import re_path, path
from djnago.conf.urls import url,include 

urlpatterns += [
       url('(<record_id>[0-9]+)/',views.record_detail),
       #or 
       re_path('(<record_id>[0-9]+)/', views.record_detail),
       #or
       path('<int:record_id>/', views.record_detail) 

    ]

答案 1 :(得分:0)

试试这个:

path(r'^record/(?P<record_id>[0-9]+)/$', views.record_detail)

答案 2 :(得分:0)

就像@Exprator写的那样,路径应该是:

path('<int:record_id>/', views.record_detail, name='record_detail'),

但是,我认为在视图中可能存在问题&#34; record_detail&#34;,视图应该声明如下:

def record_detail(request, record_id):

然后,您可以在视图正文中引用您的record_id。 这是我的代码:

urlpatterns = [ path('', views.index, name='index'), path('<int:record_id>/', views.record_detail, name='record_detail'), ]

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world.")

def record_detail(request, record_id):
    return HttpResponse("Hello, world. You're record is: "+str(record_id))

结果如下: enter image description here