Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django、csrf_令牌上的测试post请求_Django_Python 3.x_Django Csrf - Fatal编程技术网

django、csrf_令牌上的测试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,其灵感来自: 您可以将

我正在Django应用程序中尝试测试一些post方法,但由于
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