Django Url и Views не могут передавать параметры - PullRequest
0 голосов
/ 18 декабря 2018

Я использую Django 2.1.4. Я хочу передать параметр, такой как question_id в URL, но я просто получаю 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 голосов
/ 18 декабря 2018

С 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')

См. также эту статью для получения дополнительной информации.

0 голосов
/ 18 декабря 2018

Я думаю, что это старая (до 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 учебник , особенно стр. 3 .

...