我有一个HTML表单:{% set delete_urls = url_for('store_add') ~ store_id ~ "?__METHOD_OVERRIDE__=DELETE" %}
在视图中:
^{pr2}$
当然实现了路由:from werkzeug import url_decode
from flask import flash
class MethodRewriteMiddleware(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
if 'METHOD_OVERRIDE' in environ.get('QUERY_STRING', ''):
args = url_decode(environ['QUERY_STRING'])
method = args.get('__METHOD_OVERRIDE__')
if method in ['GET', 'POST', 'PUT', 'DELETE']:
method = method.encode('ascii', 'replace')
environ['REQUEST_METHOD'] = method
return self.app(environ, start_response)
但在提交delete表单时仍然不能访问delete方法?
出什么问题了?在
编辑:
delete的问题如下。
当我提交表单时,它似乎试图“发布”到url:/storeadd/13?__METHOD_OVERRIDE__=DELETE
但是POST-url规则规定它只能是:/storeadd。因此,它给出405个错误页。
因此,应该发生的超驰永远不会发生。在