Вы можете добавить в регистратор настраиваемый фильтр для поиска имени маршрута. Если вы просто используете сервер разработки, это будет обработчик werkzeug
. Когда вы перейдете к производству, вам нужно будет найти обработчик спецификаций c. Полный пример (который вы можете отслеживать в консоли браузера, чтобы подтвердить, что форма была отправлена, несмотря на отсутствие записи на сервере):
from flask import Flask, render_template_string
import logging
class AjaxFilter(logging.Filter):
def filter(self, record):
return "statusdata" not in record.getMessage()
log = logging.getLogger('werkzeug')
log.addFilter(AjaxFilter())
home_template = """
<form method="post" action="{{ url_for('route_a') }}" class="testAjax">
<input type="submit" value="submit A">
</form>
<form method="post" action="{{ url_for('statusdata') }}" class="testAjax">
<input type="submit" value="submit B">
</form>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$(".testAjax").submit(function(e) {
e.preventDefault();
var form = $(this);
var url = form.attr('action');
$.ajax({
type: "POST",
url: url,
data: form.serialize(),
context: form,
success: function(resp) {
console.log(resp);
}
});
});
</script>
"""
app = Flask('__name__')
@app.route('/')
def home():
return render_template_string(home_template)
@app.route('/a', methods=['POST'])
def route_a():
return "1"
@app.route('/statusdata/', methods=['POST'])
def statusdata():
return "2"
if __name__ == '__main__':
app.run()