【问题标题】:Django To use two FilterView classes in one templateDjango 在一个模板中使用两个 FilterView 类
【发布时间】:2022-01-21 20:41:57
【问题描述】:

我正在主窗口中使用 FilterView 创建一个搜索表单。 在主窗口的搜索表单中双击输入表单,显示模态框。 我想在模态中显示另一个 FilterView 类。 这两个FilterView的类在它们所引用的模型、过滤器和表单上是不同的。 如何实现?

Views.py

class Filter1(FilterView):
    model = Model1
    filterset_class = Filter1
    template_name = 'filter.html'    

class Filter2(FilterView):
    model = Model2
    filterset_class = Filter2
    template_name = 'filter.html' 

HTML(模板)

<form action="" method="get">

        <div class="row">
           {{filter.form|crispy}}    <-I want to use class filter 1
        </div>

<div id="myModal" class="modal fade" tabindex="-1" role="dialog">
・・・
{{filter.form|crispy}}    <- I want to use class filter 2
</div>

【问题讨论】:

    标签: python html python-3.x django


    【解决方案1】:

    你不能那样使用它。一个请求一次只会调用一个后端 API/url 并返回一个响应。您可以做的是在一个响应中将过滤器作为上下文发送。例如:

    filter1 = Filter1()
    filter2 = Filter2()    
    context = {
        'filter1': filter1,
        'filter2': filter2,
        'result': result,
    }
    return render(request, '<your template name>', context)
    

    这应该可以解决您的问题。或者,您可以在单击模态按钮时使用 JavaScript 进行 API 调用,并使用单独的 URL 路由为模态中的过滤器获取 JSON 响应。使用 JavaScript 并发出 AJAX 请求是推荐的方法,因为它会减少一次调用中返回的数据量,并且不会在不需要时在响应中保留不必要的文本。

    【讨论】:

      猜你喜欢
      • 2012-07-01
      • 2013-05-30
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2017-10-20
      • 2013-10-23
      相关资源
      最近更新 更多