在Django中基于每个应用程序自动将变量添加到上下文中?

时间:2010-10-16 17:55:28

标签: python django django-urls

我想在Django中添加一个上下文变量,这样我就可以基于每个应用程序定义它的值,或者将它留空。

示例:

应用/ someapp / views.py:

def_context_var('app_name', 'Calendar')

templates / base.html:

{% if app_name %}You are in {{ app_name }} app.{% endif %}
....
{% if app_name %}Subsections of {{ app_name }}: ...{% endif %}

我考虑了以下内容:

  1. 在应用程序中(在视图中或在URL中)声明变量,并创建上下文处理器。但我不能理解如何在给定请求对象的情况下提取var。
  2. 在视图上放置装饰器。嗯,我不喜欢这个想法:太多的样板或重复的代码。
  3. #1但更好:制作在服务器重启时执行的方法(如上例所示),将数据写入dict,然后以某种方式将上下文处理器(如何?)获取应用程序名称并从中提取数据字典。我在哪里放置方法,dict,上下文处理器如何知道视图对象在哪里?

1 个答案:

答案 0 :(得分:2)

您可以在上下文处理器中调用resolve(request.path)来解析当前网址。请参阅django documentation on resolve for its return values,尤其是app_name