我试图为客户的fb页面创建一个简单的,html-only的facebook应用程序。我想使用django的扁平页面,这样客户和他的工作人员就可以通过他们网站的django管理员更改应用程序的内容。问题是Django返回403 "CSRF验证失败。请求已中止“。当facebook尝试发送自己的帖子信息并访问应用程序的url时出错。
我已经知道了@csrf_exempt装饰器,但我不确定如何将它应用于平面页面视图,因为它在django.contrib代码中。此外,我只想在要求视图调用特定的facebook.html模板(而不是default.html模板)时禁用csrf保护。例如,如果恰好有一个{% crsf_exempt %}模板标记,那就太好了。
有人能想出解决这个问题的方法吗?或者也许我应该放弃使用django-flatpages为facebook应用程序提供服务的想法?
发布于 2011-03-24 13:51:12
尝试在名为facebook的视图上使用此装饰器:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt这将禁用该视图上的csrf保护。这有帮助吗?
发布于 2012-01-06 13:28:40
我遇到了和你完全一样的问题。我想为平面页面启用csrf (但不是站点的其余部分),并最终使用了以下中间件:
class DisableCSRFOnFlatPages(object):
def process_request(self, request):
try:
FlatPage.objects.get(url=request.META.get('PATH_INFO'))
setattr(request, '_dont_enforce_csrf_checks', True)
except FlatPage.DoesNotExist:
return将其添加到您的设置,它应该禁用csrf检查,无论何时有一个平面页面。
https://stackoverflow.com/questions/5414937
复制相似问题