我正在尝试运行自定义python脚本并将其值返回给模板。自定义脚本的返回函数正在脚本中返回值,但是我不能在模板中使用它。
这是我的自定义脚本,它返回标签值:
def genre(f):
K.clear_session()
model = joblib.load('music/finalized_CNNmodel.sav')
print(model.layers[0].input_shape)
mel_spec(f)
test_image=image.load_img(f'media/{f.file.name}.png', target_size=(256,256), color_mode='rgb')
test_image=image.img_to_array(test_image)
test_image=np.expand_dims(test_image,axis=0)
result=model.predict(test_image)
label = np.argmax(result)
return label
我正在通过以下视图调用此函数:
def model_form_upload(request):
documents = Document.objects.all()
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
print(request.FILES)
newdoc = Document(file=request.FILES['file'])
newdoc.save()
print(newdoc.file.name)
genre(newdoc)
return render(request,'music/result.html',
{'documents':documents,'form':form})
else:
form = DocumentForm()
return render(request,'music/result.html',
{'documents':documents,'form':form})
这是我的模板
{% if genre.label == 0 %}
CLASSICAL
{% elif genre.label == 1 %}
DOHORI
{% else %}
POP
{% endif %}
我希望在模板中显示结果,但是返回值未传递到模板。
答案 0 :(得分:1)
我没有一个genre()
函数的示例输出和完整的模板,我在猜测。
您应将genre()
函数的结果传递给模板,如下所示:
def model_form_upload(request):
documents = Document.objects.all()
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
print(request.FILES)
newdoc = Document(file=request.FILES['file'])
newdoc.save()
print(newdoc.file.name)
return render(
request,'music/result.html',
{'documents':documents,'form':form, 'genre':genre(newdoc)}
)
else:
form = DocumentForm()
return render(request,'music/result.html',
{'documents':documents,'form':form})
答案 1 :(得分:0)
我这是一个愚蠢的错误。如果万一有人怀疑我忘记了在我的观点中为该函数分配变量:
label = genre(newdoc)
context ={'documents':documents,'form':form,'label':label}
此后,我准备出发了。