No se puede recuperar la variable de url con la aplicación Flask después de enviar el formulario de búsqueda

Me gustaría presentar una nueva vista después de que el usuario envíe un formulario de búsqueda. Lo hice de la misma manera que lo hago con mis otras vistas, pero desafortunadamente esta vez no ocurre nada, no puedo recuperar el contenido de la ruta de la aplicación. (Entonces, esta pregunta no es un duplicado de esta pregunta, el problema ocurre solo después de enviar el formulario, funciona perfectamente en cualquier otra situación). Escribo algo en el formulario, lo envío, luego la url cambia en el navegador, pero La vista no cambia de todos modos. Estoy casi seguro de que es porque el ? y = en la barra de búsqueda, pero no sé cómo debo tratar con ellos en el código de Python.

En realidad, cuando envío el formulario, mi navegador me redirige a una url como esta:

 http://domain/.com/?search=content+from+textfield 

Y así es como intenté capturar el contenido del campo de búsqueda y presentar una nueva vista del lado del Frasco:

 @app.route('/?search=', methods=['POST']) def hello_url(url_content): return render_template("search-results.html", searchString = url_content]) 

Realmente apreciaría si alguien pudiera mostrarme el camino correcto, básicamente solo quiero recuperar el valor de dentro de la función hello_url después de presionar el botón de búsqueda.

Aquí está mi html:

  

Confunde los parámetros de URL, que se capturan con , con los parámetros de consulta, a los que se accede en request.args . Elimine el parámetro de consulta de su definición de ruta y acceda a él en la vista.

 from flask import request @app.route('/') def index(): return render_template('index.html') @app.route('/search') def search(): search = request.args.get('search') # will be None if form wasn't submitted # do something with search return render_template('search.html', search=search) 

index.html :

 

Tienes varios errores. Primero, está especificando incorrectamente la ruta en el lado del servidor. No puede capturar o especificar parámetros de consulta en la ruta del matraz. Puedes tener algo como

 @app.route('/search') 

En segundo lugar, debe proporcionar una acción y un método en su formulario. Asi que

 

Si no especifica el método, se enviará como un GET y los campos aparecerán como argumentos de consulta. Si hace una publicación, puede recuperar los campos como en el lado del servidor:

 request.form['inputSearch'] 

Introduje la ruta / search, pero podría hacer lo mismo desde la raíz “/”.