如何解决Django Context未呈现
我想渲染包含一些内容的视图。我不明白为什么不呈现上下文。 render_recall_details()函数会导致问题-> ctx不是None,在我看来,没有理由不将其呈现在html文件中
views.py
class RecallDetail(View):
template_name = "recall_detail.html"
def get(self,request,*args,**kwargs):
if request.GET:
q = request.GET
q = q.dict()
recall = find_recall_by_querystring(q)
if recall:
self.render_recall_details(request,recall)
else:
return render(request,self.template_name)
return render(request,self.template_name)
def render_recall_details(self,obj,**kwargs):
ctx = {
'head': 'Hallo','rec': RecallForm(),'docs': find_docs(obj),}
print(ctx)
return render(request,self.template_name,context=ctx)
forms.py
class RecallForm(forms.ModelForm):
class Meta:
model = Recall
fields = ('Recall_CODE','Recall_NAME','Recall_DESCRIPTION','Recall_START_DATE','Recall_PLANNED_COMPLETATION_DATE','Recall_STATUS','Recall_DATE_COMPLETED')
我的html_template:
{% extends 'base.html' %}
{% block content %}
<div class="content-wrapper">
<h1>{{ head }}</h1>
...
</div>
{% endblock content %}
解决方法
在您的代码库中似乎是一个错字。在Django中,每个视图 必须返回响应 。因此,就您而言,如果变量 recall
具有一定的价值,您将不会返回任何信息。因此,将您的视图更改为
class RecallDetail(View):
template_name = "recall_detail.html"
def get(self,request,*args,**kwargs):
if request.GET:
q = request.GET
q = q.dict()
recall = find_recall_by_querystring(q)
if recall:
# you need to put the `return` statement here
return self.render_recall_details(request,recall)
else:
return render(request,self.template_name)
return render(request,self.template_name)
def render_recall_details(self,obj,**kwargs):
ctx = {
'head': 'Hallo','rec': RecallForm(),'docs': find_docs(obj),}
print(ctx)
return render(request,self.template_name,context=ctx)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。