local variable 'Document' referenced before assignment
我一直在获取此变量未结合的错误,但我似乎不明白为什么。
导入看起来不错。我正在使用django 1-10
from django.shortcuts import render
# Create your views here.
from forms import DocumentForm
from models import Document
def SaveDocument(request):
saved = False
if request.method == "POST":
#Get the posted form
MyDocumentForm = DocumentForm(request.POST, request.FILES)
if MyDocumentForm.is_valid():
print 'It enters here'
Document = Document()
Document.name = MyDocumentForm.cleaned_data["name"]
Document.document = MyDocumentForm.cleaned_data["document"]
Document.save()
saved = True
else:
print 'Fails'
else:
MyDocumentForm = DocumentForm()
return render(request, 'saved.html', locals())
问题是您只需在savedocument()函数中重新定义文档即可。只需将本地变量重命名为document
而不是Document
:
document = Document()
当Python解析函数定义的主体并遇到诸如
之类的分配时foo = ...
python默认情况下将foo
解释为本地变量。
因此,当您提到:
Document = Document()
您导入的Document
在您的SaveDocument()
功能中不再访问。为了进行这项工作,请将其更改为:
document = Document()
并在其余代码中使用document
的推荐。
您可以通过告诉Python使用Document
的global
参考(这将使您执行当前代码) as:
global Document
Document = Document()
# NOTE: Do not use this in actual code. It is bad practice to
# override the imported modules, class, function with the variable names
根据Python的global
语句文档:
全局语句是一项声明,可为整个当前代码块。这意味着列出的标识符应被解释为全球群体。没有全局,尽管免费变量可能是指无需宣布全局的全球变量,但不可能分配给全球变量。
。