2017-01-19 3 views
0

"AttributeError: 'unicode'オブジェクトには属性 'get'"というエラーはありませんが、何も問題は解決していません。Django(カスタム)形式のunicodeオブジェクトにはattrbute 'get'がありません

私は、ダウンロードページにリダイレクトするためにformiewを使用しようとしています。

私は、これはにリダイレクトする必要があります私/ダウンロード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" 

をリダイレクトするためにFormViewコントロールからform_valid関数をオーバーライド: "A = B & B = C /ダウンロードしてください" しかし、私は私にリダイレクト次のエラーでFormViewコントロール:

AttributeError: 'unicode' object has no attribute 'get'

私の完全なトレースバックがある:

Internal Server Error: /serverlogs/business.sla.nl/accesslogs/realtime/view

Traceback (most recent call last): File "/home/jasperf/.virtualenvs/servicepanel/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 131, in get_response

response = middleware_method(request, response)

File "/home/jasperf/.virtualenvs/servicepanel/local/lib/python2.7/site-packages/django/middleware/clickjacking.py", line 32, in process_response

if response.get('X-Frame-Options') is not None: AttributeError: 'unicode' object has no attribute 'get'

私はこの問題を解決することができ、ダウンロード/にリダイレクト方法

= B & B = C

注:?私は、変数aまたはbを使用する予定はありませんが、uはそのURLを取得することができたときに私がすることができますそこに自分の変数を入れてください。

答えて

4

reverseの結果を返すことはできません。これは単なる文字列です。リダイレクトを返す必要があります。通常はreverseを代わりに使用してURL引数を直接渡すことができますが、あなたの場合はクエリパラメータを追加したいので、依然として明示的に呼び出す必要があります。

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

これは文字通り完璧です。私は2つの事が混ざり合っています。 form_validはリダイレクトを呼び出します(self.get_success_url())。私は、私はリダイレクトを忘れて、いくつかの空想的な方法でget_successをオーバーライドしていると思っていました。 – JasperFennet

関連する問題