Django(自定义)表单unicode对象没有attrbute'get'

时间:2017-01-19 16:44:36

标签: python django forms unicode

我看过几篇关于“AttributeError:'unicode'对象没有属性'get'”的帖子,但没有解决我的问题。

我正在尝试使用formiew重定向到我的下载页面。

我从formview覆盖form_valid函数以重定向到我的/ download url

    def form_valid(self, form):
       clean_form = form.cleaned_data
       print clean_form.get('starttime')
       return reverse('accesslogs_download', kwargs={'domain': self.get_object().domainname}) + "?a=b&b=c"

这应该重定向到: “/ download?a = b& b = c”但我被重定向到我的formView,出现以下错误:

  

AttributeError:'unicode'对象没有属性'get'

我的完整回溯是:

  

内部服务器错误:/serverlogs/business.sla.nl/accesslogs/realtime/view

     

追踪(最近一次通话):     在get_response中输入文件“/home/jasperf/.virtualenvs/servicepanel/local/lib/python2.7/site-packages/django/core/handlers/base.py”,第131行

     

response = middleware_method(request,response)

     

文件“/home/jasperf/.virtualenvs/servicepanel/local/lib/python2.7/site-packages/django/middleware/clickjacking.py”,第32行,在process_response中

     

如果response.get('X-Frame-Options')不是None:   AttributeError:'unicode'对象没有属性'get'

我如何解决此问题并重定向到/下载?a = b& b = c

注意:我不打算使用变量a或b,但是当你可以到达那个url时,我可以在那里放置我自己的变量。

1 个答案:

答案 0 :(得分:4)

您无法返回reverse的结果 - 这只是一个字符串。您需要返回重定向;通常,您可以使用reverse代替并直接传递URL参数,但在您的情况下,您希望附加查询参数,因此您仍需要显式调用它。

destination = reverse('accesslogs_download', kwargs={'domain': self.get_object().domainname}) + "?a=b&b=c"
return redirect(destination)