web-dev-qa-db-ja.com

Django url pattern-string parameter

数値パラメーターを持つDjango URLパターンは次のとおりです。

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

Poll_idが数字ではなく文字列の場合、正しい構文は何ですか?

41
rechie

気にするキャラクターに依存します。 ドキュメント say、\wは、英数字またはアンダースコアを提供します。

urlに文字列パラメーターがある場合、次のようなURLを持つことができます。

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

これにより、スラッグ文字列が例えばnode-jsなどの文字列を渡すこともできます。

38
Hiro

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)
14

2.1のようなDjangoの新しいバージョンでは、使用できます

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

ここにあるように Django URLディスパッチャー

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

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

1
SuperNova