数値パラメーターを持つDjango URLパターンは次のとおりです。
url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail')
Poll_idが数字ではなく文字列の場合、正しい構文は何ですか?
気にするキャラクターに依存します。 ドキュメント say、\w
は、英数字またはアンダースコアを提供します。
urlに文字列パラメーターがある場合、次のようなURLを持つことができます。
url(r'^polls/(?P<string>[\w\-]+)/$','polls.views.detail')
これにより、スラッグ文字列が例えばnode-jsなどの文字列を渡すこともできます。
Django 2.0以降)では、intと同様に使用されるslug記号を追加することで、URL内の文字列パラメーターを簡単に処理できます。 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)
2.1のようなDjangoの新しいバージョンでは、使用できます
path('polls/<str:poll_id>', views.polls_detail)
ここにあるように Django URLディスパッチャー
def polls_detail(request,poll_id):
#process your request here
Django version> = 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