Django网址和视图无法传递参数

时间:2018-12-18 15:18:12

标签: python django parameters django-views parameter-passing

我正在使用Django 2.1.4 我想在url中传递诸如question_id之类的参数,但我只得到404。

这是我的代码:

urls.py:

urlpatterns = [
    path('index',views.index , name='index'),
    path('index/(?P<question_id>[0-9])',views.detail , name='detail'),
]

这是我的:

view.py

def index(request,):
    return HttpResponse("Welcome To My Page")

def detail(request, question_id):
    return HttpResponse("new Page" + str(question_id))

当我输入http://127.0.0.1:8000/polls/index/12时 在URL中,我只得到404。

2 个答案:

答案 0 :(得分:1)

我认为这是旧的(2.0之前的)表示法。我用

path('profile/edit_avatar/<int:avatar_id>', views.edit_avatar, name='edit_avatar')

在我的urls.py和

def edit_avatar(request, avatar_id=0):

在我看来(使用默认值,以防万一)

请参见Django tutorial,尤其是page 3

答案 1 :(得分:0)

在Django 2.1.4中,path方法可以使用以下语法来解析URL中的参数:

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

如果您要坚持使用旧的正则表达式,则应将“详细信息”视图更改为

path('index/(?P<question_id>[0-9]+/$)',views.detail , name='detail')

另请参见this article