问题描述
使用Django,尝试将用户的答案保存到数据库时,显示了名称错误。我在视图函数中嵌套了一个函数,当我不尝试将数据保存到数据库时它可以正常工作。但是,一旦我尝试将代码放入views函数中以保存数据,就会产生此名称错误。以下是带有代码的文件,
models.py文件
nodelist = list(G.nodes())
forms.py文件
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class ansquestions(models.Model):
m_invested = models.CharField(max_length=100)
p_return = models.CharField(max_length=100)
years = models.CharField(max_length=100)
inflation_yes_no = models.CharField(max_length=100)
r_output = models.TextField(default=True)
date_answered = models.DateTimeField(default=timezone.Now)
author = models.ForeignKey(User,on_delete=models.CASCADE)
views.py文件 (注意:fvinvestment函数嵌套在investmentfvcalc函数下。在此处粘贴时,它不会显示为缩进investmentfvcalc,但实际上是将fvinvestment函数缩进并嵌套在investmetncalc函数下。)
from django import forms
from .models import ansquestions
class ansquestionsForm(forms.ModelForm):
class Meta:
model = ansquestions
fields = ['m_invested','p_return','years','inflation_yes_no','r_output','date_answered','author'
]
错误:
运行上面的代码,会给我错误“在封装范围内赋值之前引用的自由变量'makeup_infl'的投资错误NameName at investmentfv / Investementfvcalc”,之后我会将变量“ makeup_infl”作为全局变量fvinvestment函数,它将产生错误“ NameError-未定义名称'makeup_infl'
解决方法
将fvinvestment更改为全球范围,并传入以下变量:years_i和composition_infl
def fvinvestment(years_i,makeup_infl):
....
这还将解决您的makeup_infl未定义的错误