需要为 Django 中的任务和子任务提供选项。其中示例任务为 abc_123
,示例子任务为 xyz-987
example.com/abc_123/options
example.com/abc_123/xyz-987/options
我的 urls.py 文件
urlpatterns = [
url(r'^/(?P<taskId>.+)/options$', views.AvailableOptions.as_view()),
url(r'^/(?P<taskId>.+)/(?P<subtaskId>.+)/options$', views.AvailableOptions.as_view()),
]
仅发送taskId时工作正常。当任务和 subtaskId 都发送时。该模式采用 abc_123/xyz-987
作为任务 ID。我需要将 url 分别解析为 abc_123
和 xyz-987
作为 taskId 和 subtaskId
最佳答案
您不应该匹配斜杠,因此我们可以使用匹配除斜杠之外的所有字符的字符组,因此:
urlpatterns = [
url(r'^/(?P<taskId><b>[^/]+</b>)/options$', views.AvailableOptions.as_view()),
url(r'^/(?P<taskId><b>[^/]+</b>)/(?P<subtaskId><b>[^/]+</b>)/options$', views.AvailableOptions.as_view()),
]
但是您可能想使用 path(…)
[Django-doc]与 <str:…>
路径转换器,所以:
urlpatterns = [
path('<<b>str:</b>taskId>/options/', views.AvailableOptions.as_view()),
path('<<b>str:</b>taskId>/<<b>str:</b>subpathId>/options/', views.AvailableOptions.as_view()),
]
关于python - Django 中的 URL 解析有两种模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67098154/