0

如何定义 URL 模式,以便可以将任意数量的参数传递给 URL?我真的研究了文档和其他 stackoverflow 问题,但我没有找到类似的东西。我需要它作为电子商务网站的过滤器。

我想实现这样的目标:

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')
4

2 回答 2

1

你考虑过使用query_params吗?

那是path('test', views.test, name='test')

网址:/test/?filter=asd....

然后通过视图中的请求访问它:

def test(request):
    params = request.GET.get('filter', None)
    return HttpResponse()

看看你能不能像那样解决你的问题:)

于 2020-09-30T15:24:43.333 回答
1

我认为这是创建路径的错误方法,如果您想将其用作过滤器而不是在路径中使用它,您应该使用 url 参数作为获取请求。

但是如果你坚持这样做,你可以使用正则表达式'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'),
]
于 2020-09-30T15:32:57.827 回答