django url中的id(number)路径

5ssjco0h  于 2023-07-01  发布在  Go
关注(0)|答案(1)|浏览(101)

我是新来的django
在www.example.com中urls.py,我这样设置路径。我尝试创建一个带有URL的页面:localhost:8000/topics/1/

urlpatterns = [
    path('topics/(?P<topic_id>\d+)/', views.topic, name='topic'),
]

在views.py中。代码如下:

def topic(request, topic_id):
    """Show a single topic and all its entries"""
    topic = Topic.objects.get(id=topic_id)
    entries = topic.entry_set.order_by('date_added')
    context = {'topic': topic, "entries": entries}
    return render(request, 'learning_logs/topic.html', context)

我得到错误404当输入localhost:8000/topics/1/.
主题/(?P\d+)/ [name ='topic']
当前路径topics/1/与其中任何一个都不匹配。
但正确的URL结果是:localhost:8000/主题/(%3FP1%5Cd+)/
是网址中的路径有问题还是什么问题?

bmp9r5qi

bmp9r5qi1#

试试这个

urlpatterns = [
    path('topics/<topic_id>/', views.topic, name='topic'),
]

如果你需要一个整数,你可以把它指定为,

urlpatterns = [
    path('topics/<int:topic_id>/', views.topic, name='topic'),
]

为什么topics/(?P<topic_id>\d+)/'不工作?
实际上你是在混合使用。
如果你试图在你的url中提供一个*包含正则表达式的表达式***,使用re_path()**。
所以你的模式将是:

from django.urls import re_path

urlpatterns = [
    re_path('topics/(?P<topic_id>\d+)/', views.topic, name='topic'),
]

相关问题