Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Python Django:如何通过URL仅传递选定参数_Python_Django_Django Views_Django Urls - Fatal编程技术网

Python Django:如何通过URL仅传递选定参数

Python Django:如何通过URL仅传递选定参数,python,django,django-views,django-urls,Python,Django,Django Views,Django Urls,我正在尝试创建一个搜索页面,在那里可以点击按钮,这将过滤像在这个页面中的帖子[Splice Sounds][2](我想你需要一个帐户来查看这个,所以我会添加屏幕截图) 要做到这一点,我想我需要传递一个列表,以便我可以根据该列表进行筛选,但我找不到一种方法来做到这一点 对于每种类型(由for循环创建)都有一个GET表单,这将允许我一次按一种类型进行筛选,但我希望一次按多个类型进行筛选,这样就行不通了 在我链接到的站点中:他们将类型/标记传递到url中,那么我如何在django中做到这一点 另外:我

我正在尝试创建一个搜索页面,在那里可以点击按钮,这将过滤像在这个页面中的帖子[Splice Sounds][2](我想你需要一个帐户来查看这个,所以我会添加屏幕截图)

要做到这一点,我想我需要传递一个列表,以便我可以根据该列表进行筛选,但我找不到一种方法来做到这一点

对于每种类型(由for循环创建)都有一个
GET
表单,这将允许我一次按一种类型进行筛选,但我希望一次按多个类型进行筛选,这样就行不通了

在我链接到的站点中:他们将类型/标记传递到url中,那么我如何在django中做到这一点

另外:我可以创建单独的url路径并链接到这些路径,但是我必须为每一种类型/标签的组合这样做,这太多了,所以我不能这样做

该链接显示了一个站点,该站点通过如下url传递标记

以下是一些相关代码:

这就是我想要过滤的方式,这就是为什么我需要传递参数列表

for arg in args:
    Posts = Posts.filter(genres=arg)
网址

urlpatterns=[
路径(“”,views.find,name='find'),
路径('searchgenres=',views.find_search,name='find_search'),
]
编辑:我已经尝试了很多方法,比如使用ajax,但我无法让它很好地工作


编辑2:我已将问题更改为如何通过URL仅传递选定参数要将列表传递到请求中,您可以:

  • 使用html复选框并在视图中将它们聚合到一个列表中
  • 使用单个文本框并在视图中解析
  • 如果以列表形式获取请求,则可以使用
    Post.objects.filter(genre\uu in=genres)

    了解Django允许从Django.db使用Q objects
    进行复杂的查找也可能会有所帮助。models import Q
    |
    字符表示或。这允许进行复杂的过滤。例如:
    Posts.objects.filter(Q(genre='Pop')|Q(genre='Rock')|Q(genre='Jazz'))

    我理解这一点,但我正试图做到这一点。我显示的代码适用于,但它需要一个类型列表才能使用,因此您知道通过URL仅传递选定类型的方法吗?我已更改了每个选中复选框的问题,提交表单后,这些值将传递到请求中。它不是列表,标记包含字符串,踢你能踢的split@iklinac你知道一种方法吗?我可以通过url传递选定的类型,因为如果我把所有类型都放在路径中,那么它会被所有类型过滤掉。我现在改变了问题
    urlpatterns = [
        path('', views.find, name='find'),
        path('searchgenres=<genres_selected>', views.find_search, name='find_search'),
    ]