Django url 传递任意数量的参数,由 / 分隔
Django url passing as many parameters as you want delimited by /
如何定义 URL 模式,以便我可以向 URL 传递任意数量的参数?我真的研究了文档和其他 Whosebug 问题,但没有找到类似的东西。我需要它作为电子商务网站的过滤器。
我想实现这样的目标:
urlpatterns = [
path('test/<str:var1>-<str:var2>/<str:var3>-<str:var4>/...', views.test, name='test'),
]
在我的视图函数中,我会这样定义它:
def test(request, *args, **kwargs):
# Do whatever you want with kwargs
return HttpResponse('Test')
您是否考虑过使用 query_params
?
也就是path('test', views.test, name='test')
URL: /test/?filter=asd....
然后在视图中通过请求访问:
def test(request):
params = request.GET.get('filter', None)
return HttpResponse()
看看你能不能像那样解决你的问题:)
我认为这是创建路径的错误方法,如果您想将它用作过滤器而不是在路径中使用它,您应该使用 url 参数作为获取请求。
但如果你坚持这样做,你可以使用 Regular expressions 're_path'
# urls.py
from django.urls import path, re_path
from django.conf.urls import url
from myapp import views
urlpatterns = [
re_path(r'^test/(?P<path>.*)$', views.test, name='test'),
# or use url instead it's same thing
url(r'^test/(?P<path>.*)$', views.test, name='test'),
]
如何定义 URL 模式,以便我可以向 URL 传递任意数量的参数?我真的研究了文档和其他 Whosebug 问题,但没有找到类似的东西。我需要它作为电子商务网站的过滤器。
我想实现这样的目标:
urlpatterns = [
path('test/<str:var1>-<str:var2>/<str:var3>-<str:var4>/...', views.test, name='test'),
]
在我的视图函数中,我会这样定义它:
def test(request, *args, **kwargs):
# Do whatever you want with kwargs
return HttpResponse('Test')
您是否考虑过使用 query_params
?
也就是path('test', views.test, name='test')
URL: /test/?filter=asd....
然后在视图中通过请求访问:
def test(request):
params = request.GET.get('filter', None)
return HttpResponse()
看看你能不能像那样解决你的问题:)
我认为这是创建路径的错误方法,如果您想将它用作过滤器而不是在路径中使用它,您应该使用 url 参数作为获取请求。
但如果你坚持这样做,你可以使用 Regular expressions 're_path'
# urls.py
from django.urls import path, re_path
from django.conf.urls import url
from myapp import views
urlpatterns = [
re_path(r'^test/(?P<path>.*)$', views.test, name='test'),
# or use url instead it's same thing
url(r'^test/(?P<path>.*)$', views.test, name='test'),
]