V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
YUCOAT
V2EX  ›  Python

请问能不能把Django模板的部分变量写入settings.py中,比如SITE_NAME

  •  
  •   YUCOAT · 2012-08-19 19:39:09 +08:00 · 4431 次点击
    这是一个创建于 4487 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我写的一个小网站里面几乎每个模板都会用到SITE_NAME这个变量,如果每次都把这个变量传入render_to_response函数中显然有点不合理,所以我想问一下能不能把它写进settings.py中,然后通过某种方法直接在模板中使用这个变量
    5 条回复    1970-01-01 08:00:00 +08:00
    yanng
        1
    yanng  
       2012-08-19 20:37:06 +08:00   ❤️ 2
    不知你是否注意到了,在每个template中,都可以通过{{ user }} 获取到request.user,还可以通过{{ MEDIA_URL }} 获取到settings.py中定义的settings.MEDIA_URL。
    它是通过定义processor实现的,具体来说,就是自定义一个processor函数,此函数接受request作为参数,返回一个dict,然后将此函数放入settings.py中的TEMPLATE_CONTEXT_PROCESSORS元组中,就可以在每个传入context_instance 为RequestContext实例的view所对应的template中获取到该变量。
    对于你这种情况,processor函数如下:
    def site_name(request):
    """
    Adds SITE_NAME context variables to the context.

    """
    return {'SITE_NAME': settings.SITE_NAME}

    你可以参考下我的blog:
    http://www.nerdyang.com/2012/04/19/django-template%E4%B8%AD%E7%9A%84context/
    qdvictory
        2
    qdvictory  
       2012-08-19 20:47:24 +08:00
    很easy,settings.py里面写SITE_NAME='v2ex'
    用的时候
    from django.conf import settings
    settings.SITE_NAME
    qdvictory
        3
    qdvictory  
       2012-08-19 20:51:44 +08:00
    理解错了,删不了了- -
    kuno
        4
    kuno  
       2012-08-19 22:08:42 +08:00
    vicalloy
        5
    vicalloy  
       2012-08-20 10:55:30 +08:00
    和kuno说的一样,使用context processor。
    另外我针对这个情况有写一个Django tag。
    https://github.com/vicalloy/django-helper/blob/master/djangohelper/templatetags/djangohelper_tags.py
    使用方法:
    """
    {% load djangohelper_tags %}
    {% get_setting "key" default_val "as_key" %}
    {{ as_key }}
    """
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2787 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:04 · PVG 08:04 · LAX 16:04 · JFK 19:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.