Django的url模式有一个数字参数:
url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail')
如果我的poll_id不是数字而是字符串,正确的语法是什么?
jmo0nnb31#
为了在url中有一个字符串参数,你可以有:网址如下:
url(r'^polls/(?P<string>[\w\-]+)/$','polls.views.detail')
这甚至会允许段塞串通过,例如:node-js等串。
2izufjch2#
在较新版本的Django2.1中,您可以使用
path('polls/<str:poll_id>', views.polls_detail)
这里给出Django URL dispatcher
def polls_detail(request,poll_id): #process your request here
euoag5mw3#
这取决于你关心什么字符。就像the docs说的,\w会给予你一个字母数字字符或下划线。
\w
aamkag614#
从Django 2.0开始,通过添加 slug 符号,可以更容易地处理URL中的字符串参数,它的用法就像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)
dfddblmv5#
从Django2.0开始,path被引入。path在url中不接受reg ex,因此它是旧版url的简化版本从2.0开始,您可以使用path,如下所示:
path
url
path('polls/<poll_id>', views.polls_detail)
字符串路径参数不需要显式指定,因为路径参数的默认数据类型是字符串本身。Ref : https://docs.djangoproject.com/en/2.0/releases/2.0/#whats-new-2-0
dced5bon6#
如果你使用的Django版本〉= 2.0,那么就像下面这样简单地完成。
from django.urls import path urlpatterns = [ ... path('polls/<string>/$','polls.views.detail') ... ]
Source: https://docs.djangoproject.com/en/2.0/ref/urls/#django.urls.path
7kqas0il7#
如果你的尖括号参数是一个路径,即包含"/",你必须使用path:。示例:path('section/<path:some_path>,app.views.some_view,name='some_name')Source: https://docs.djangoproject.com/en/4.0/topics/http/urls/#path-converters(编辑)"str-匹配任何非空字符串,不包括路径分隔符"/"。如果表达式中不包含转换器,则这是默认值。匹配任何由ASCII字母或数字加上连字符和下划线字符组成的slug字符串。例如,building-your-1st-django-site。path-匹配任何非空字符串,包括路径分隔符"/"。这使您可以匹配完整的URL路径,而不是像str那样匹配URL路径的一段。
path:
path('section/<path:some_path>,app.views.some_view,name='some_name')
pprl5pva8#
这取决于你关心什么字符。就像文档中说的,\w会给予你一个字母数字字符或下划线。
8条答案
按热度按时间jmo0nnb31#
为了在url中有一个字符串参数,你可以有:网址如下:
这甚至会允许段塞串通过,例如:node-js等串。
2izufjch2#
在较新版本的Django2.1中,您可以使用
这里给出Django URL dispatcher
euoag5mw3#
这取决于你关心什么字符。就像the docs说的,
\w
会给予你一个字母数字字符或下划线。aamkag614#
从Django 2.0开始,通过添加 slug 符号,可以更容易地处理URL中的字符串参数,它的用法就像int在urls.py中的用法一样:
在基于函数或基于类的视图中,可以像处理其他参数一样处理它:
dfddblmv5#
从Django2.0开始,
path
被引入。path
在url中不接受reg ex,因此它是旧版url
的简化版本从2.0开始,您可以使用path,如下所示:
字符串路径参数不需要显式指定,因为路径参数的默认数据类型是字符串本身。
Ref : https://docs.djangoproject.com/en/2.0/releases/2.0/#whats-new-2-0
dced5bon6#
如果你使用的Django版本〉= 2.0,那么就像下面这样简单地完成。
Source: https://docs.djangoproject.com/en/2.0/ref/urls/#django.urls.path
7kqas0il7#
如果你的尖括号参数是一个路径,即包含"/",你必须使用
path:
。示例:
path('section/<path:some_path>,app.views.some_view,name='some_name')
Source: https://docs.djangoproject.com/en/4.0/topics/http/urls/#path-converters
(编辑)
"str-匹配任何非空字符串,不包括路径分隔符"/"。如果表达式中不包含转换器,则这是默认值。
匹配任何由ASCII字母或数字加上连字符和下划线字符组成的slug字符串。例如,building-your-1st-django-site。
path-匹配任何非空字符串,包括路径分隔符"/"。这使您可以匹配完整的URL路径,而不是像str那样匹配URL路径的一段。
pprl5pva8#
这取决于你关心什么字符。就像文档中说的,\w会给予你一个字母数字字符或下划线。