我正在研究现有的代码库并看到了这段代码:
from constants import AppType
"""
AppType is a constant class in constants.py and it goes like
AppType:
TypeA = 1
TypeB = 2
"""
@log_request(log_response=False)
@user_profile_required
def app_home(request, user, user_profile):
apps = db_manager.get_all_apps_for_user(
user_profile.uid, user_profile.platform
)
return render(request, 'appinfo/all_apps.html', locals())
# notice the use of locals here for convinience
在all_apps.html
:
{% for val, name in app_types.items %}
{{val}}, {{name}}<br>
{% endfor %}
我在渲染时看到了这个回应:
1, TypeA
2, TypeB
根据我的理解(如果我错了,请纠正我),locals
应该返回局部变量的字典。但很明显,视图函数中没有app_types
。
我怀疑有一些魔法将AppType
翻译为app_types
,并将TypeC = 3
附加到AppType
。然后我确实看到了3, TypeC
被渲染出来。所以我的嫌疑人似乎是真的?
这里的诀窍是什么,或者我错过了一些其他信息来理解这个问题?
答案 0 :(得分:0)
好吧,结果app_types
的定义在context_processors.py
中并加载到TEMPLATE_CONTEXT_PROCESSORS
中的settings.py
。
所以这只是理解Django模板系统及其处理的问题