【问题标题】:Getting a TypeError at / 'function' object is not iterable在 / 'function' 对象处获取 TypeError 是不可迭代的
【发布时间】:2019-09-17 15:10:49
【问题描述】:

在我的 .views 文件中添加了一个新的 def 函数后,我不断收到这个错误('function' object is not iterable),有什么想法可能是什么问题吗?

这样做的目的是过滤带有复选框的查询集。

这是我的 views.py 函数:

def FilterView(request):
    qs = Product.objects.all()
    ptag = request.GET.get('ptag')

    if ptag == 'on':
        qs = qs.filter(ptag='')

    qs = filter(request)
    context = {
        'queryset': qs
    }
    return render(request, "partials/search_form.html", context)

在我的网址中:

from search.views import HomeView, FilterView

urlpatterns = [
    url(r'^$', HomeView.as_view(), FilterView),
]

非常感谢!

【问题讨论】:

  • 请包含您的整个堆栈跟踪
  • qs = filter(request) 应该做什么?
  • 为什么在urlpatterns 中使用url(...)?我相信推荐path(...)
  • 你为什么将 HomeView.as_view()FilterView 作为参数传递给你的根 url?
  • 感谢您的回答,非常感谢!对不起,伙计们,我还是新手,但愿意学习。 :) 我使用的是 url(...) 而不是 path(...) 因为我使用的是 Django 1.10.5 版本,因为我需要使用 Haystack 并且这个 urlpattern 默认附带它。

标签: python django function filter django-views


【解决方案1】:

您的代码没有意义。您将HomeViewFilterView 都传递给单个url(),并且您正在对请求对象运行内置filter 函数?这里应该是一个工作示例,减去无法解释的filter()

urls.py

from search.views import HomeView, FilterView

urlpatterns = [
    ...
    url(r'^$', FilterView, name='filter'),
    ...
]

views.py

def FilterView(request):
    ptag = request.GET.get('ptag', '')
    qs = Product.objects.all() if ptag != 'on' else Product.objects.filter(ptag='')

    #qs = filter(request)  # What is this even trying to do?
    context = {
        'queryset': qs
    }
    return render(request, "partials/search_form.html", context)

【讨论】:

  • 非常感谢您的回答,非常感谢!在这样的类中插入这个函数怎么样?我已经尝试过了,我不再收到错误了!这是网址: url(r'^$', HomeView.as_view()
  • 以及视图文件中的代码: ` class HomeView(TemplateView): template_name = "home.html" def FilterView(request): ptag = request.GET.get('ptag', '' ) qs = Product.objects.all() if ptag != 'on' else Product.objects.filter(ptag='') context = { 'queryset': qs } return render(request, "partials/search_form.html" , 上下文)`
【解决方案2】:

您正在传入 homeview 和 filterview。你需要选择一个。

在 urls.py 中 改变

url(r'^$', HomeView.as_view(), FilterView)

url(r'^$', Filterview)

【讨论】:

    猜你喜欢
    • 2016-07-31
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2017-08-27
    • 2018-10-10
    相关资源
    最近更新 更多