20

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

  1. Only runs when the view function is called with post_id as a parameter
  2. somehow has access to post_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?

1 Answer 1

25

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)}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.