#python #flask #jinja2
Вопрос:
У меня есть поле поиска в моей навигационной панели следующим образом:
lt;div class="navbar-nav mr-auto"gt; lt;form class="navbar-form navbar-left" role="search" method="GET" gt; {{ barsearchform.hidden_tag() }} lt;div class="input-group"gt; {{ barsearchform.query(class="form-control rounded",placeholder="Search articles") }} {{ barsearchform.submit(class="btn btn-outline-primary") }} lt;/divgt; lt;/formgt;
но при отправке все поля отображаются в строке URL , даже кнопка «Отправить», вот так
http://localhost:5000/?csrf_token=IjlmMmU0NTg0MmE0N2E1NDBkOGRiOTZlMDk0MjYzNjRjZWI2Njc2YjUi.YZqHoQ.ka3sNHGTCWSQ_GvnOnwr4j86iHAamp;query=aaaaaaaaamp;submit=Search
обработчик маршрута
@articles.route("/search/") def bar_search(): if request.method == "GET": term = request.args.get('query') ... return render_template(...
чего бы я хотел, так это http://localhost:5000/?query=aaaaaaaa
Ответ №1:
в методе GET все указывается в URL-адресе. У вас есть несколько вариантов
- перепишите URL-адрес в пункте назначения
- передайте материал, чтобы скрыть его в качестве заголовков (это может вызвать проблемы с CORS)
- используйте метод POST и прячьте вещи в теле
- вы можете разместить вещи, которые не хотите отправлять за пределы
lt;formgt;
Комментарии:
1. причина, по которой я хочу использовать GET, заключается в том, чтобы иметь возможность поделиться ссылкой для поиска, но мне кажется неправильным иметь в ней маркер csrf и даже кнопку отправки !. все поисковые запросы и видео, которые я видел, показывают только запрос в URL-адресе с использованием параметра from с get