I want to be able to put certain configuration information in my settings.py file - things like the site name, site url, etc.
If I do this, how can I then access those settings in templates?
Thanks
Let's say in your settings.py
file you have:
SITE_URL='www.mydomain.tld/somewhere/' SITE_NAME='My site'
If you need that in just one or two views:
from django.shortcuts import render_to_response from django.conf import settings def my_view(request, ...): response_dict = { 'site_name': settings.SITE_NAME, 'site_url': settings.SITE_URL, } ... return render_to_response('my_template_dir/my_template.html', response_dict)
If you need to access these across a lot of apps and/or views, you can write a context processor to save code:
James has a tutorial on this online.
Some useful information on the when and if of context processors is available on this very site here.
Inside your my_context_processors.py
file you would:
from django.conf import settings def some_context_processor(request): my_dict = { 'site_url': settings.SITE_URL, 'site_name': settings.SITE_NAME, } return my_dict
Back in your settings.py
, activate it by doing:
TEMPLATE_CONTEXT_PROCESSORS = ( ... # yours 'my_context_processors.some_context_processor', )
In your views.py
, make a view use it like so:
from django.shortcuts import render_to_response from django.template import RequestContext def my_view(request, ...): response_dict = RequestContext(request) ... # you can still still add variables that specific only to this view response_dict['some_var_only_in_this_view'] = 42 ... return render_to_response('my_template_dir/my_template.html', response_dict)
If using a class-based view:
# # in settings.py # YOUR_CUSTOM_SETTING = 'some value' # # in views.py # from django.conf import settings #for getting settings vars class YourView(DetailView): #assuming DetailView; whatever though # ... def get_context_data(self, **kwargs): context = super(YourView, self).get_context_data(**kwargs) context['YOUR_CUSTOM_SETTING'] = settings.YOUR_CUSTOM_SETTING return context # # in your_template.html, reference the setting like any other context variable # {{ YOUR_CUSTOM_SETTING }}
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