23
A
回答
44
讓我們在settings.py
文件說你有:
SITE_URL='www.mydomain.tld/somewhere/'
SITE_NAME='My site'
如果你需要在一個或兩個觀點:
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)
如果您需要通過很多應用程序和/或視圖訪問它們,你可以編寫一個上下文處理器來保存代碼:
James有關於這個 online的教程。
一些有用的信息關於何時和如果上下文處理器可在這個網站上 here。
裏面你my_context_processors.py
文件,你會:
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
在
settings.py
後退,這樣做激活它:
TEMPLATE_CONTEXT_PROCESSORS = (
...
# yours
'my_context_processors.some_context_processor',
)
在你views.py
,做一個視圖中使用它像這樣:
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)
2
如果你只需要一對或兩對一對夫婦視圖,上下文處理器可能是矯枉過正,因爲它會將它們添加到您的應用程序中的所有視圖。但是如果它在很多模板中使用,競爭處理器就是要走的路。
對於簡單的一關的情況下只是通過任何設置,您從視圖模板需要:
from django.conf import settings
from django.shortcuts import render_to_response
def some_view(request):
val = settings.SAVED_SETTING
return render_to_response("index.html", {
'saved_setting':val
})
,並通過在你的模板訪問設置:
{{ saved_setting }}
4
如果使用類基於查看:
#
# 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 }}
相關問題
- 1. GWT用Django模板設置變量值
- 2. 使用django模板生成django模板
- 3. Django提高模板DoesNotExist當我使用多個設置模塊
- 4. 配置django設置以使用1.4.1。加載模板錯誤
- 5. Django的:使用Django模板
- 6. 使用Django模板
- 7. 使用Django模板
- 8. Django模板 - 我可以設置要在父模板中使用的變量嗎?
- 9. 設置特定的一天Django模板
- 10. Py/Django:在模板中設置變量
- 11. Django項目模板加載器設置
- 12. 如何在django模板中設置變量(使用set標籤)?
- 13. 使用API設置AngularJS模板javascript
- 14. 使用Django的Javascript模板
- 15. 如何使用Django模板
- 16. 的Django 1.11模板使用
- 17. 在Django模板使用spaceless
- 18. 使用boolan在Django模板
- 19. 使用_set.all的Django模板
- 20. 使用JSON的Django模板
- 21. 在Django模板中使用
- 22. Django設置模塊
- 23. 我可以使用django模板呈現django模板嗎?
- 24. 如何在使用sendgrid API的django中使用設計模板?
- 25. 使用require.js全局設置lodash /下劃線模板設置
- 26. 在Django模板中設置和重置變量的值
- 27. Django - 設置和使用網站範圍內的變量以用於模板
- 28. django通用模板
- 29. 有沒有辦法在django模板中使用變量設置塊的名稱?
- 30. 如何設置使用Django
我想在我的基本模板中使用這些設置,從其他所有其他繼承,我有點拉茲年。 有什麼辦法可以使默認行爲,使render_to_response將使用RequestContext而不是隻是一個上下文?如果我可以幫忙的話,我不想在整個代碼中添加相同的參數。 – Roger 2010-08-07 14:05:11
你可以在render_to_response上編寫一個包裝函數,它將請求作爲附加參數,並在該函數中:tmp_dict = RequestContext(request),tmp_dict.update(response_dict)return render_to_response('... html',tmp_dict) - 這可能讓你更容易地通過搜索和替換操作改變你的代碼 – Geradeausanwalt 2010-08-07 14:55:01
這很好,謝謝大家。 – Roger 2010-08-08 13:29:00