Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在url中强制django查询字符串_Django_Django Views - Fatal编程技术网

在url中强制django查询字符串

在url中强制django查询字符串,django,django-views,Django,Django Views,假设您有这样一个url: /cats/?filter=kittens url(r'^/cats/?filter=(?P<filter>.+?)$', views.CatsFilteredListView.as_view(), name='cats-filtered') 是否可以构建一个django url模式来强制使用querystring 目前我有: url(r'^/cats/$', views.CatsListView.as_view(), name='cats') 现在我

假设您有这样一个url:

/cats/?filter=kittens
url(r'^/cats/?filter=(?P<filter>.+?)$', views.CatsFilteredListView.as_view(), name='cats-filtered')
是否可以构建一个django url模式来强制使用querystring

目前我有:

url(r'^/cats/$', views.CatsListView.as_view(), name='cats')
现在我想添加querystring并获得一个不同的视图,如下所示:

/cats/?filter=kittens
url(r'^/cats/?filter=(?P<filter>.+?)$', views.CatsFilteredListView.as_view(), name='cats-filtered')
url(r'^/cats/?filter=(?P.+?)$”,views.CatsFilteredListView.as_view(),name='cats-filtered')
是否可以这样做,同时仍将querystring保留在
请求的GET参数中?

请记住,这只是一个测试用例,我和您也应该知道,像这样的过滤可能不是解决问题的方法。简短回答:不,这是不可能的。Django url模式仅在url的“路径”组成部分上匹配,句号。

简短回答:不,不可能。Django url模式仅在url的“路径”成分period上匹配。

不,这是不可能的。如果确实需要两个单独的视图,可以编写一个视图来分派正确的视图

def cat_list_view(request, *args, **kwargs):
    if 'filter' in request.GET:
        return cat_list_filter_view(request, *args, **kwargs)
    else:
        return cat_list_unfiltered_view(request, *args, **kwargs)

但是,对于
CatsListView
CatsFilteredListView
的示例,可能有更好的方法来组合视图。例如,您可能能够在
get\u queryset
方法中进行过滤。

不,这是不可能的。如果确实需要两个单独的视图,可以编写一个视图来分派正确的视图

def cat_list_view(request, *args, **kwargs):
    if 'filter' in request.GET:
        return cat_list_filter_view(request, *args, **kwargs)
    else:
        return cat_list_unfiltered_view(request, *args, **kwargs)

但是,对于
CatsListView
CatsFilteredListView
的示例,可能有更好的方法来组合视图。例如,您可能能够在
get\u queryset
方法中进行过滤。

虽然确实无法像那样操作路径组件,但您可以传入一个字典。这是第三个未命名的论点

如果您希望对多个资源使用相同的视图,并在每种情况下传递数据以配置其行为,那么这种方法非常有用(下面我们在每种情况下提供不同的模板)

注意:额外选项和命名捕获模式都作为命名参数传递给视图。如果对捕获的模式和额外选项使用相同的名称,则仅将捕获的模式值发送到视图(在额外选项中指定的值将被删除)


由于

虽然确实不能像那样操作路径组件,但可以传入字典。这是第三个未命名的论点

如果您希望对多个资源使用相同的视图,并在每种情况下传递数据以配置其行为,那么这种方法非常有用(下面我们在每种情况下提供不同的模板)

注意:额外选项和命名捕获模式都作为命名参数传递给视图。如果对捕获的模式和额外选项使用相同的名称,则仅将捕获的模式值发送到视图(在额外选项中指定的值将被删除)


感谢

好的,这就把事情弄清楚了,我在网上到处搜索这个:)好的,这就把事情弄清楚了,我在网上到处搜索这个:)是的,我在考虑检查参数。(然后把事情放在一个视图中。我同意Django确实有一些强大的功能来做这件事。Tnx为你的答案!是的,我只是想检查参数。(然后把事情放在一个视图中。我同意关于
get\u queryset
Django确实有一些强大的功能可以做到这一点。谢谢你的回答!