2012-08-03 4 views
2

views.py장고 CSRF 토큰

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

내가 above.But csrf_token 값이 같은 전망을 내 forms.im 생성 CSRF 토큰에 CSRF 토큰을 추가하려고는 그림과 같은 몇 가지 프록시 객체를 제공합니다 django 1.3을 사용합니다. 사전에 도움을 주셔서 감사합니다.

+0

? 템플릿에서'RequestContext'와'{% csrf_token %} '을 사용하지 않습니까? – Rohan

+0

@Rohan 저는 RequestContext를 사용하고 있지 않지만 템플릿에서 {% csrf_token %}을 사용합니다. – shiva

답변

6

csrf 메서드가 지연되어 Promise/Proxy를 반환합니다. 이 객체가 템플릿에서 호출되면 템플릿 엔진은 실제 메소드를 트리거하는이 객체를 유니 코드합니다.

이 시도 : 왜 당신이 직접이 일을하는

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

@Willain 예 이제 템플릿에서 string.but을 얻었습니다. {% csrf_token %} 템플릿 태그를 사용하여 숨겨진 필드 이벤트가 없습니다. – shiva

+0

은 미들웨어의 CsrfViewMiddleware입니까? https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-to-use-it – Willian

+0

@Willain 예. django.middleware.csrf.CsrfViewMiddleware가 있습니다. – shiva