django、csrf_令牌上的测试post请求
我正在Django应用程序中尝试测试一些post方法,但由于django、csrf_令牌上的测试post请求,django,python-3.x,django-csrf,Django,Python 3.x,Django Csrf,我正在Django应用程序中尝试测试一些post方法,但由于csrf_令牌,我无法在没有浏览器的情况下测试它。所以我用 @csrf\u豁免装饰器 然而,我忘了在生产中移除那些装饰器。有没有更好的办法 @csrf\u emption(仅在调试中=True) 因此,类似于此,装饰器仅在应用程序处于调试模式时才处于活动状态。还是有更好的方法来测试post请求 比如selenium可能有一些方法可以做到这一点 注意:我目前正在使用Django 1.7.2和Python 3.4.1,其灵感来自: 您可以将
csrf_令牌
,我无法在没有浏览器的情况下测试它。所以我用
@csrf\u豁免
装饰器
然而,我忘了在生产中移除那些装饰器。有没有更好的办法
@csrf\u emption(仅在调试中=True)
因此,类似于此,装饰器仅在应用程序处于调试模式时才处于活动状态。还是有更好的方法来测试post请求
比如selenium
可能有一些方法可以做到这一点
注意:我目前正在使用Django 1.7.2和Python 3.4.1,其灵感来自:
您可以将新文件添加到应用程序中,我们称之为禁用\u csrf.py:
class DisableCSRF(object):
def process_request(self, request):
setattr(request, '_dont_enforce_csrf_checks', True)
然后,您可以编辑您的设置.py以添加以下内容:
if DEBUG:
MIDDLEWARE_CLASSES += myapp.disable.DisableCSRF
让我知道它是否有效。您到底是如何测试它的?当我运行单元测试时,Django不强制CSRF。当您尝试测试
post
视图时,由于CSRF安全中间件(非常酷的安全功能),请求被拒绝。试试response=request.post(url)
我会得到默认的html,接受时应该是json