用于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如何强制用户在允许访问活动之前处理对话框?我的许可证代码怎么了?   java ArraysList作为JSON   mysql如何在java中创建包含多个可选where子句的搜索语句?   java如何让Apache Camel在“直接”路径的末尾删除文件?   使用socket在两个Androids之间进行java实时数据传输。IO(websocket)和4G   如何在java中实现两个CORBA服务器之间的通信   会话树xml表示为java对象   java Skype4Java编号swtwin323325   java RecyclerView getAdapterPosition()不工作:第一次单击返回正确位置,第二次单击返回1   java在$TOMCAT/conf/context上为JNDI设置资源。xml   java为什么第二个矩形冲突在第一个矩形冲突时不起作用?   JScrollPane上的java JTextArea未出现在JPanel上   java如何将实现的PriorityQueue打印为字符串?   jpa使用Jersey更新用户角色RESTJava(JAXRS)