1
django에서 matplotlib 막 대형 차트를 처리하려고합니다. 사용되는 데이터는 내 데이터베이스에서 쿼리됩니다. 하기 matplotlib 부분의 코드는 모두 올바른 할당Django : 데이터베이스 쿼리를 수행하는 동안 UnboundLocalError
전에 참조 로컬 변수 '항목을'/graph.png에서
UnboundLocalError : 내 코드를 실행하면
는이 오류를 건너 왔어요 이전에 정적 데이터를 실행 해 보았을 때 효과적이었습니다. 그러나 데이터베이스에서 quering 데이터를 시도하면 views.py에서이 오류가 발생합니다. 여러 페이지에서 여러 번이 쿼리를 수행하여 정상적으로 작동합니다. 그러나이 요청에는 작동하지 않습니다. 왜?def bar_chart(request): #Topic Distribution topics = list(topic.objects.filter(subject_id=subj_id).order_by('id').values()) fig = Figure() ax = fig.add_subplot(111) N = 5 ind = np.arange(N) width = 0.35 group_labels = [] #list of x-axis tick labels y = [] #list of y-values total_marks = 0 #total marks for topic in topics: t_questions = question.objects.filter(topic_id=topic.id) if (len(t_questions) != 0): topic_marks = 0 #each topic starts at 0 marks distribution for t_question in topic_questions: topic_marks += t_question.marks #accumulate the marks total_marks += topic_marks y.append(topic_marks) group_labels.append(topic.title) for yval in y: yval = yval/total_marks * 100 #convert to percentage ax.bar(ind, y, width, color='r') ax.set_ylabel('Distribution in %') ax.set_title('Topic Distribution') ax.set_xticks(ind) ax.set_xticklabels(group_labels) fig.autofmt_xdate() canvas=FigureCanvas(fig) response=HttpResponse(content_type='image/png') canvas.print_png(response) return response
모델을 지정하기 위해 전역 가져 오기를 수행했습니다. 동일한 views.py 내에서, 나는 다른 많은 def에서 그것을 사용했다. 내 모델 클래스 이름은 확실히 "주제"가 아니라 "주제"입니다. 그래도 오류가 있습니다. – jdtoh
그런 다음 긁으십시오. 이 오류는 동일한 기능에서 정의 된 로컬 변수 항목을 가짐으로써 발생합니다. 그것이 모델 클래스 이름 규칙의 이유 중 일부라고 생각합니다. 로컬 변수의 이름을 다른 것으로 변경하거나 별칭을 사용하여 모델 클래스를 가져 오면 작동합니다. 답변 편집. – atereshkin
감사! 그것은 작동합니다! – jdtoh