Подтвердить что ты не робот

Django url pattern - строковый параметр

Диаграмма URL-адреса Django с числовым параметром:

url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail')

Какой будет правильный синтаксис, если мой poll_id не является числом, а строкой символа?

4b9b3361

Ответ 1

Зависит от того, какие персонажи вам нравятся. Как документы говорят, \w даст вам буквенно-цифровой символ или символ подчеркивания.

Ответ 2

для наличия строкового параметра в URL-адресе вы можете:  url вот так:

url(r'^polls/(?P<string>[\w\-]+)/$','polls.views.detail')

Это позволит даже пропускать строки например: строки типа node -js и т.д.

Ответ 3

Начиная с Django 2.0, легче обрабатывать строковые параметры в URL с добавлением символа slug, который используется так же, как int в urls.py:

from django.urls import path

urlpatterns = [
    path('something/<slug:foo>', views.slug_test),
]

И в вашем представлении на основе функций или классов вы будете обрабатывать его так же, как и любой другой параметр:

def slug_test(request, foo):
    return HttpResponse('Slug parameter is: ' + foo)

Ответ 4

Если вы используете версию Django> = 2.0, то это делается просто, как показано ниже.

from django.urls import path    

urlpatterns = [
    ...
    path('polls/<string>/$','polls.views.detail')
    ...
]

Источник: https://docs.djangoproject.com/en/2.0/ref/urls/#django.urls.path

Ответ 5

В новых версиях Django, таких как 2.1, вы можете использовать

path('polls/<str:poll_id>', views.polls_detail)

как указано здесь Django URL диспетчер

def polls_detail(request,poll_id):
#process your request here

Ответ 6

Начиная с Django 2.0, path был введен. path не принимает reg ex в URL, следовательно, он предназначен для упрощенной версии старого url

Начиная с версии 2.0, вы можете использовать путь, как показано ниже:

path('polls/<poll_id>', views.polls_detail)

Параметры пути к строке не нужно указывать явно, поскольку типом данных по умолчанию для параметров пути является сама строка.

Ссылка: https://docs.djangoproject.com/en/2.0/releases/2.0/#whats-new-2-0