用于http方法重写表单params和header的django中间件
django-method-override的Python项目详细描述
django方法覆盖
django中间件,通过_method
表单参数(ruby on rails样式)或x-http-method-override头重写http方法。
安装
通过PIP安装:
pip install django-method-override
在django的
CsrfViewMiddleware
之后添加MethodOverrideMiddleware
:MIDDLEWARE=(# ...'django.middleware.csrf.CsrfViewMiddleware','method_override.middleware.MethodOverrideMiddleware',# ...)
将
method_override
添加到INSTALLED_APPS
:INSTALLED_APPS=(# ...'method_override',)
用法
使用表单中提供的模板标记添加所需表单:
{%loadmethod_override%}<formaction="{%url'post-detail'%}"method="POST">{%csrf_token%}{%method_override'PUT'%}</form>
现在,您可以在基于类的视图中使用put
。django方法重写甚至将表单数据复制到request.PUT
:
classPostView(View):defput(self,request):form=Form(request.PUT)# ...
还支持x-http-method-override头。因此,对于上述视图,这也将起作用:
$.ajax({headers:{"X-HTTP-Method-Override":"PUT"},type:"POST",url:"http://localhost:8000/posts/1/"// ...});
配置
django方法重写可以从djangosettings.py
文件中自定义:
METHOD_OVERRIDE_ALLOWED_HTTP_METHODS
允许重写的方法的列表。默认为:
['GET','HEAD','PUT','POST','DELETE','OPTIONS','PATCH']
METHOD_OVERRIDE_PARAM_KEY
用于重写方法的窗体参数键。默认为'_method'
。
METHOD_OVERRIDE_HTTP_HEADER
要检查的http头。默认为'HTTP_X_HTTP_METHOD_OVERRIDE'
METHOD_OVERRIDE_INPUT_TEMPLATE
用于呈现窗体参数输入的字符串template。它将基于kwargs,name
和value
。默认为:
'<input type="hidden" name="{name}" value="{value}">'
版权所有
版权所有(c)2013LocalMed, Inc.。有关详细信息,请参见许可证。