Reputation: 3265
I've got the following in conf.py
:
def setup(app):
app.add_config_value('base_url','http://localhost:2000', True)
How do I get this into my .rst files? I wrote this:
:base_url:/my_app/api/application/
But it only prints :base_url:
instead of the actual URL.
How do I get the actual config value to be emitted?
Upvotes: 21
Views: 7720
Reputation: 511
You can insert any conf.py existing variable (just with version is working) in any .rst file:
conf.py:
version = "0.0.1"
rst file text:
Version: |version|
result:
EDIT: As @zakariya said, this is only working with version, no other variables.
Upvotes: 0
Reputation: 3265
Ah hah!
Take a look at the sphinx.ext.extlinks module.
So I have code in my conf.py that does this:
extlinks = {'api_url' : (settings.BASE_URL + '%s', settings.BASE_URL)}
And in my .rst file, I have this:
:api_url:`/myapp/api/application/`
which produces the nicely formatted link as such:
http://localhost:8000/myapp/api/application/
Upvotes: 3
Reputation: 36184
For the substitution of links extlinks is fine, for including arbitrary config values as asked in your question you can use rst_epilog for substitutions (or rst_prolog for text, that should be added on top of your .rst files):
In your conf.py:
my_config_value = 42
rst_epilog = '.. |my_conf_val| replace:: %d' % my_config_value
In your .rst source:
My config value is |my_conf_val|!
In your output:
My config value is 42!
Upvotes: 27