变量导入在views.py中不起作用

时间:2013-09-30 06:09:43

标签: python python-2.7 django-views django-1.5

为什么函数外部的变量导入不在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))

为什么?导入函数不应该在整个文件中提供变量吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

这不是导入不起作用,而是分配。通过在函数内分配MS_FIELDS,您告诉Python它是一个本地var,它会覆盖导入的全局名称。

我不明白你为什么要那样做。只需将MS_FIELDS明确传递给上下文。使用locals()是一个黑客,而不是一个非常好的。