基于类的视图 - 未调用get函数

时间:2017-11-18 11:38:47

标签: python django django-filter django-1.11

尝试使用Django-filter基于类的视图FilterView,但我在模板中渲染过滤器时遇到问题。似乎过滤器不在上下文中。

DOCS:https://django-filter.readthedocs.io/en/master/guide/usage.html#generic-view-configuration

编辑:似乎永远不会调用视图的get(self...)函数。我在get方法中设置了断点,但它并没有停在那里。

EDIT2:这真的很奇怪。调试器甚至不在线上停止:class UserFilterView(...)

filters.py

class UserProfileFilter(django_filters.FilterSet):
    class Meta:
        model = UserProfile
        fields = ['budget','looking_for','user']

views.py

class UserFilterView(FilterView):
    filterset_class = UserProfileFilter
    template_name = 'frontend/userprofile_filter.html'

userprofile_filter.html

{% extends "frontend/base.html" %}
{% block content %}
    <div class="filter">
        {{ filter.form.as_p }}
    </div>
    <hr>
    <div class="results">
    </div>
{% endblock %}

但在浏览器中,我看到了:

...
<div class="filter">

</div>
...

urls.py

url('^search/$',views.UserFilterView.as_view(), name="user_filter")

无法找出问题所在。你有什么想法?

1 个答案:

答案 0 :(得分:1)

由于在其他地方定义了get方法,听起来你的CBV继承会遇到某种问题。我们可能需要查看更多代码以及所有内容的确切版本才能进行调试。

但是,我强烈建议您在此处写下3行视图来回避所有这些 - https://django-filter.readthedocs.io/en/master/guide/usage.html#the-view

CBV很适合采取一项非常简单的事情,并变成需要花费数小时调试的东西。