2012-08-03 208 views
2

views.pyDjango的CSRF令牌

from django.core.context_processors import csrf 
context.update(csrf(request)) 
{'csrf_token': <django.utils.functional.__proxy__ object at 0xae0f4ec>} 

我想CSRF令牌添加到像above.But csrf_token價值的意見我forms.im發生CSRF令牌給出了一些代理對象像所示的而不是字符串。我使用django 1.3。提前感謝任何幫助。

+0

你爲什麼要手工做這個?你不是在模板中使用'RequestContext'和'{%csrf_token%}'。 – Rohan 2012-08-03 09:48:46

+0

@Rohan我不是使用RequestContext的,但我M在模板 – shiva 2012-08-03 09:50:17

回答

6

的跨站請求僞造方法是懶,它返回一個無極/代理。一旦在模板中調用了這個對象,模板引擎就會將這個對象統一起來,從而觸發真正的方法。

試試這個:

print unicode(csrf(request)['csrf_token']) 
+0

使用{%csrf_token%} @Willain是現在我得到在模板中的string.but我沒有隱藏字段eventhough I M使用{%csrf_token%}模板標籤。 – shiva 2012-08-03 10:00:59

+0

在中間件CsrfViewMiddleware? https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-to-use-it – Willian 2012-08-03 10:02:37

+0

@Willain是的,我確實有django.middleware.csrf.CsrfViewMiddleware – shiva 2012-08-03 10:05:37