How to access flask config in javascript?

2019-02-20 14:42发布

问题:

I need the config variables in javascript in my flask application. Currently, I access the config variables via:

@app.route('/api/getconfigs/')
def get_config_variable():
    return config['VARIABLENAME']

Is this the only way to get the flask config in javascript? What would be the best practice to do this?

回答1:

If you need the value as part of an API call, then yes, sending the value from an endpoint is correct. If you're rendering templates, then you can render the values in the JavaScript sent to the client.

Flask injects its config into the template context. Within a template, config['key'] or config.key will access any value in the config. Since you're rendering it as JavaScript, use the tojson filter to render valid values.

var debug = {{ config['DEBUG']|tojson }};


回答2:

You could load the specific variable into your jinja2 globals like so:

app.jinja_env.globals.update(VARIABLENAME=config['VARIABLENAME'])

Then in an always included base-template load the variable into your javascript like so.

<script>
     var config = {};
     config.VARIABLENAME = {{VARIABLENAME}};
</script>

Or just throw the whole config into your jinja2 env like so:

app.jinja_env.globals.update(config=app.config)

And then insert the specific Variable only if it is found in config.

{% if config['VARIABLENAME'] %}
     <script>
         var config = {};
         config.VARIABLENAME = {{config['VARIABLENAME']}};
     </script>
{% endif %}