【问题标题】:Django TypeError 'QueryDict' object is not callableDjango TypeError 'QueryDict' 对象不可调用
【发布时间】:2013-04-03 22:25:10
【问题描述】:

我一直在寻找与我目前面临的相同问题的帖子。但我还没有找到解决办法。我的问题是:

我有一个标签列表。由{% for tag in all_tags %} 生成。每个标签都有一个标签状态表单。当用户从下拉列表中选择一个选项时,表单提交并应该保存 TagStatus 对象(标签是外键到 TagStatus)。然而,返回的是这样的:

Exception Type: TypeError
Exception Value: 'QueryDict' object is not callable

html:

<form class="nice" id="status-form" method="POST" action="">
     {% csrf_token %}
     <input type="hidden" name="status_check" />
     <input type='hidden' name="tag" value="{{ tag }}" />
     <select name="select" id="positionSelect" class="input-text category" onchange="this.form.submit()">
          <option name="all" value="0">Your Status</option>
          <option name="investing" value="1">Status 1</option>
          <option name="selling" value="2">Status 2</option>
          <option name="interested" value="3">Status 3</option>
     </select>
</form>

views.py:

@login_required
def tags(request):
    all_tags = Tag.objects.all()
    context = base_context(request)
    if request.method == 'POST':
        if 'status_check' in request.POST:
            status = request.GET('status')
            tag = request.GET('tag')
            user = request.user
            tag_status, created = TagStatus.objects.get_or_create(status=len(status), tag=tag, user=user).save()

            response = simplejson.dumps({"status": "Successfully changed status"})
        else:
            response = simplejson.dumps({"status": "Error"})
            return HttpResponse (response, mimetype='application/json')
    context['all_tags'] = all_tags
    return render_to_response('tags/tag.html', context, context_instance=RequestContext(request))

models.py(如果相关):

class TagStatus(models.Model):
    user = models.ForeignKey(User, null=True, unique=True)
    status = models.CharField(max_length=2, choices=tag_statuses)
    tag = models.ForeignKey(Tag, null=True, blank=True)

    def __unicode__(self):
        return self.status

    def save(self, *args, **kwargs):
        super(TagStatus, self).save(*args, **kwargs)

据我所知,这与状态不是数字有关。但是当我将其转换为 int 时。我犯了同样的错误。请帮我。为什么会这样?解决方法是什么?我不太确定如何解决这个问题。提前谢谢你的帮助。

【问题讨论】:

    标签: python django django-forms django-views


    【解决方案1】:

    我相信您遇到的错误在于以下几行:

    status = request.GET('status')
    tag = request.GET('tag')
    

    request.GET 是一个 QueryDict,并在它尝试“调用”一个不可调用的对象后添加 ()。您正在寻找的语法似乎是字典查找语法:

    status = request.GET['status']
    tag = request.GET['tag']
    

    【讨论】:

    • 更多错误如下。但是,是的,这就是问题所在。谢谢!
    • 对我来说,它在函数上使用了@property,使它成为一个属性,所以在没有 () 的情况下调用
    【解决方案2】:

    或者只是调用 GETs get 来获取你的值

    status = request.GET.get('status')
    tag = request.GET.get('tag')
    

    【讨论】:

      【解决方案3】:
      def add(request):
          var1 = int(request.GET.get("num1"))
          var2 = int(request.GET.get("num2"))
      
          res= var1+var2
          return render(request,'calc/result.html',{'Result':res})
      

      【讨论】:

      • 解释代码以便更好地理解以及如何解决所提出的问题。
      【解决方案4】:
      status = request.GET.get['status']
      
      tag = request.GET.get['tag']
      

      【讨论】:

      • 欢迎来到 StackOverflow。虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请编辑您的答案以添加解释并说明适用的限制和假设。
      猜你喜欢
      • 2021-03-10
      • 2021-10-29
      • 2012-06-04
      • 2019-10-10
      • 2010-11-26
      • 2020-09-01
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      相关资源
      最近更新 更多