Диаграмма URL-адреса Django с числовым параметром:
url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail')
Какой будет правильный синтаксис, если мой poll_id не является числом, а строкой символа?
Диаграмма URL-адреса Django с числовым параметром:
url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail')
Какой будет правильный синтаксис, если мой poll_id не является числом, а строкой символа?
Зависит от того, какие персонажи вам нравятся. Как документы говорят, \w
даст вам буквенно-цифровой символ или символ подчеркивания.
для наличия строкового параметра в URL-адресе вы можете: url вот так:
url(r'^polls/(?P<string>[\w\-]+)/$','polls.views.detail')
Это позволит даже пропускать строки например: строки типа node -js и т.д.
Начиная с 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)
Если вы используете версию 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
В новых версиях Django, таких как 2.1, вы можете использовать
path('polls/<str:poll_id>', views.polls_detail)
как указано здесь Django URL диспетчер
def polls_detail(request,poll_id):
#process your request here
Начиная с 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