Django模板开发与生产环境
我正在接手一个使用Django的项目,但我对怎么使用它完全没有头绪。
我想要实现的是在我的 base.html
文件中加载不同的 scripts
,大概是这样的:
<!-- if development -->
<script src="{% static "js/main.js" %}></script>
<! -- end -->
<!-- if production -->
<script src="{% static "production/js/main.min.js" %}></script>
<! -- end -->
文件结构如下:
app_name
|__ pages
|__ settings
|__ static
|__ templates
|__ etc
在 settings
文件夹里,有三个文件:
base.py : shared settings
development.py
production.py
在 development.py
文件里,
from app_name.settings.base import *
DEBUG = True
TEMPLATE_DEBUG = DEBUG
// etc
我试着在 templates/base.html
文件中做一些类似的事情,但显然没有那么简单。
{% if DEBUG %}
STUFF
{% endif %}
有没有人能帮帮我?
2 个回答
2
你需要使用内置的 调试上下文处理器。别忘了设置 INTERNAL_IPS 这个选项,比如可以设置为 ('127.0.0.1', )。
这样之后:
{% if debug %}
STUFF
{% endif %}
就应该能正常工作了。
3
你需要把你的DEBUG设置传递给模板。
正确的方法是使用上下文处理器,它可以把一些变量放到模板渲染的上下文中。
针对你的具体例子,一种解决方法是在你的应用程序中定义一个新的模块context_processors.py
,然后在里面写上
from django.core.urlresolvers import resolve
from settings import DEBUG
def debug_settings(request):
return {'DEBUG': DEBUG}
接着在settings.py文件中使用
TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request",
"app_name.context_processors.debug_settings",)
这样一来,所有的模板就都能看到你的DEBUG
设置了。