How can I get the named parameters from a URL using Flask?
Use request.args
to get parsed contents of query string:
from flask import request
@app.route(...)
def login():
username = request.args.get('username')
password = request.args.get('password')
Get a variable from the URL in a Flask route
This is answered in the quickstart of the docs.
You want a variable URL, which you create by adding <name>
placeholders in the URL and accepting corresponding name
arguments in the view function.
@app.route('/landingpage<id>') # /landingpageA
def landing_page(id):
...
More typically the parts of a URL are separated with /
.
@app.route('/landingpage/<id>') # /landingpage/A
def landing_page(id):
...
Use url_for
to generate the URLs to the pages.
url_for('landing_page', id='A')
# /landingpage/A
You could also pass the value as part of the query string, and get it from the request, although if it's always required it's better to use the variable like above.
from flask import request
@app.route('/landingpage')
def landing_page():
id = request.args['id']
...
# /landingpage?id=A
how to pass GET parameters with Flask using add_url_rule
To fetch query string parameters, you use request.args.get('argname')
in your function. Nothing is passed in -- it's all done through the globals.
How to pass GET parameters to url using Flask Request
Per the documentation I have found the answer (@E.Serra for impetus in the right direction):
flask.url_for(endpoint, **values)
Generates a URL to the given endpoint with the method provided.
Variable arguments that are unknown to the target endpoint are appended to the generated URL as query arguments. If the value of a
query argument is None, the whole pair is skipped. In case blueprints
are active you can shortcut references to the same blueprint by
prefixing the local endpoint with a dot (.).
So if you have the route
@app.route('/view/<variable>/')
def view(variable):
pass
The call
url_for('view', variable='parameter', variable2='parameter2')
will produce a url where parameter2 is a query argument.
How to get parameters from URL in python flask
I suspect you've got something else running on port 8000 and flask is listening on a different port (likely 5000). Try using url_for
instead of constructing the url yourself...
<a href="{{ url_for('.answer', t=q.title) }}">Answer</a>
See http://flask.pocoo.org/docs/1.0/api/?highlight=url_for#flask.url_for
How to get just the arguments of a request in Flask?
Use request.args
@app.route(...)
def some_method():
args = request.args
print(args)
URL parameter in flask app is showing up 1 form submission late
I think you should replace the "method" parameter of the form with the GET method. The parameter in url_for
is then no longer required. The selected date is automatically added as a URL parameter when the form is submitted.
In the query using request.args
, it is also possible to add a standard parameter as the second argument and, specifying the parameter name type, a function to convert the parameter to a date.
The example below illustrates the described possibility.
Flask (app.py)
from datetime import date
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/search')
def search():
search_date = request.args.get(
'search-date',
date.today(),
type=date.fromisoformat
)
# Your filter function here.
return render_template('search.html', **locals())
HTML (templates/search.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Search</title>
</head>
<body>
<form method="get">
<input type="date" name="search-date" value="{{search_date.isoformat()}}" />
<input type="submit" />
</form>
</body>
</html>
Related Topics
How to Use Xpath with Beautifulsoup
How to Add a Constant Column in a Spark Dataframe
How to Pass Variables Across Functions
How to Jump to a Particular Line in a Huge Text File
Plot a Horizontal Line on a Given Plot
How to Get Variable Data from a Class
Nested Arguments Not Compiling
How to Lowercase a String in Python
Pandas Read_Csv: Low_Memory and Dtype Options
Python List VS. Array - When to Use
How to Create a Guid/Uuid in Python
Perform Commands Over Ssh with Python
Why Does (1 in [1,0] == True) Evaluate to False