为什么函数外部的变量导入不在views.py中? (ms_fields.py是同一文件夹中的文件)
====这有效:变量“MS_FIELDS”正确导入=============
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, RequestContext, get_object_or_404
def current_quote(request):
from .ms_fields import MS_FIELDS #import within the function
return render_to_response('mis/current_quote.html', locals(), context_instance=RequestContext(request))
=== 这不起作用:“分配前引用的局部变量'MS_FIELDS'” =====
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, RequestContext, get_object_or_404
from .ms_fields import MS_FIELDS # import at the beginning of the file
def current_quote(request):
MS_FIELDS = MS_FIELDS
return render_to_response('mis/current_quote.html', locals(), context_instance=RequestContext(request))
为什么?导入函数不应该在整个文件中提供变量吗?
非常感谢!
答案 0 :(得分:2)
这不是导入不起作用,而是分配。通过在函数内分配MS_FIELDS,您告诉Python它是一个本地var,它会覆盖导入的全局名称。
我不明白你为什么要那样做。只需将MS_FIELDS明确传递给上下文。使用locals()
是一个黑客,而不是一个非常好的。