Django 局部变量';提交';分配前参考
我在django项目中遇到了这个错误。我的应用程序名为“scoresubmission” 基本上,我在网站上有一个功能,允许用户下载报告。 因此,在我的views.py文件中,我有report函数和import report.py文件,其中显示了如何构建报告Django 局部变量';提交';分配前参考,django,python-3.x,Django,Python 3.x,我在django项目中遇到了这个错误。我的应用程序名为“scoresubmission” 基本上,我在网站上有一个功能,允许用户下载报告。 因此,在我的views.py文件中,我有report函数和import report.py文件,其中显示了如何构建报告 它显示了这行代码中发生的错误: submission=Submission.objects.get(month=month,year=reportyear,program=program) Views.py submission=Su
它显示了这行代码中发生的错误:
submission=Submission.objects.get(month=month,year=reportyear,program=program)
Views.py
submission=Submission.objects.get(month=month,year=reportyear,program=program)
def report(request):
from scoresubmission.report import reportA, reportB, reportC
reportType = request.POST["reportType"]
reportYear = int(request.POST["reportYear"])
if reportType == 'a':
report_content = reportA(reportYear)
response = HttpResponse(report_content, content_type="text/csv")
response['Content-Disposition'] = 'inline; filename=5SAuditYearlySummaryReport_%d.xlsx' %reportYear
report.py,其中包含相关代码
对于设施中的设施:
工作表.写入(行、列、设施.名称、设施\u格式)
submission=Submission.objects.get(month=month,year=reportyear,program=program)
回溯(最近一次呼叫最后一次):
文件“C:\Users\CHLOZHAO\AppData\Local\Programs\Python\Python37\lib\site packages\django\core\handlers\exception.py”,第34行,在内部
响应=获取响应(请求)
文件“C:\Users\CHLOZHAO\AppData\Local\Programs\Python\Python37\lib\site packages\django\core\handlers\base.py”,第115行,在get响应中
response=self.process\u异常\u由\u中间件(e,请求)
文件“C:\Users\CHLOZHAO\AppData\Local\Programs\Python\Python37\lib\site packages\django\core\handlers\base.py”,第113行,在get响应中
响应=包装的回调(请求,*回调参数,**回调参数)
文件“C:\Users\CHLOZHAO\AppData\Local\Programs\Python\Python37\lib\site packages\django\contrib\auth\decorators.py”,第21行,在包装视图中
返回视图功能(请求,*args,**kwargs)
报告第185行的文件“C:\D Drive\5S Audit Website\my5saudit\scoresubmission\views.py”
报告内容=报告A(报告年度)
文件“C:\D驱动器\5S审计网站\my5saudit\scoresubmission\report.py”,第79行,在reportA中
除submission.DoesNotExist外:
UnboundLocalError:赋值前引用了局部变量“submission”
submission=Submission.objects.get(month=month,year=reportyear,program=program)
在除之外的
中,您需要参考类提交
,而不是对象,因为它本身在当时并不存在:
submission=Submission.objects.get(month=month,year=reportyear,program=program)
try:
submission=Submission.objects.get(month=month,year=reportyear,program=program)
print(submission)
avg_score=Result.objects.filter(submission=submission).aggregate(Avg('NewScore'))
#print avg_score.get('NewScore__avg')
avg_totalscore=(avg_totalscore + avg_score.get('NewScore__avg'))/count
count=count+1
except Submission.DoesNotExist: # reference to the class, not the object
pass
试试看:
submission=submission.objects.get(月=月,年=报告年,计划=计划)
打印(提交)
平均分数=结果。对象。过滤器(提交=提交)。聚合(平均('NewScore'))
#打印平均分数。获取('NewScore\uu avg')
avg_totalscore=(avg_totalscore+avg_score.get('NewScore__平均'))/count
计数=计数+1
Submission.DoesNotExist除外:#引用类,而不是对象
通过
如果Sibmission.objects.get(..)
失败,那么submission
变量永远不会被赋值,因此submission.DoesNotExist
没有意义
submission=Submission.objects.get(month=month,year=reportyear,program=program)
实际上,您不应该使用对象,而应该始终使用模型类本身来引用DoesNotExist
exception类
submission=Submission.objects.get(month=month,year=reportyear,program=program)