Suppose I have a simple route with a variable part:
@app.route('/post/<int:post_id>')
def show_post(post_id):
return 'Post %d' % post_id
Now I want to register a context processor that
post_id
as a parameterpost_id
, without having to re-parse the URL all over again with e.g. re.match
essentially:
@app.context_processor
def foo():
post_id = ???
return {'bar': some_function(post_id)}
If I could access the **kwargs
passed to show_post
in this example from the context processor I could do it, but I've found no way to do that. Any ideas?
In the first one we would use request. args. get('<argument name>') where request is the instance of the class request imported from Flask. Args is the module under which the module GET is present which will enable the retrieve of the parameters.
Use request.view_args
:
@app.context_processor
def provide_foo():
if "post_id" in request.view_args:
post_id = request.view_args["post_id"]
return {"bar": some_function(post_id)}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With