用于http方法重写表单params和header的django中间件

django-method-override的Python项目详细描述


django方法覆盖

django中间件,通过_method表单参数(ruby on rails样式)或x-http-method-override头重写http方法。

安装

  1. 通过PIP安装:

    pip install django-method-override
    
  2. 在django的CsrfViewMiddleware之后添加MethodOverrideMiddleware

    MIDDLEWARE=(# ...'django.middleware.csrf.CsrfViewMiddleware','method_override.middleware.MethodOverrideMiddleware',# ...)
  3. 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,namevalue。默认为:

'<input type="hidden" name="{name}" value="{value}">'

版权所有

版权所有(c)2013LocalMed, Inc.。有关详细信息,请参见许可证。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将值插入sql表的选定列。使用c等参数#   IF语句的java JList数据添加   java在这种情况下有没有更好的方法来调整哈希值?   java@Valid不会触发@Repository中的验证   java如何在安卓中调整位图的大小   iTextJava。lang.NoClassDefFoundError:com/itextpdf/text/DocumentException   java使用ResourceBundleMessageSource加载一个ressource包(message.properties)的全部内容   java如何通过JasperReports 6动态设置Excel工作表名称。十、   java是编写这个程序的最佳方式   JAVA伊奥。FileNotFoundException:C:\Program Files\Apache软件基金会\Tomcat 8.0\。。\webapps\ROOT\\u cips\config。伊尼   java我正在尝试创建一个TictaToe程序,但是JOptionPane和绘图有问题   垃圾收集为什么java中的finalize()方法不在Finalizer类中?为什么它是在对象类中定义的?   java如何用括号编码替换url中的括号?   java web集成移动应用程序   在netbeans中运行MIDP2应用程序时出现java错误