我正在使用Django v2.2 admin更改数据库上的信息,但是在更改并刷新页面后,新数据不存在,仅旧数据存在。
针对此问题的修复程序,如果我重新启动服务器,则模板现在可以获取我输入的新数据。
views.py
# template with context
class Home(TemplateView):
template = 'home.html'
context = { 'bar': Baby.objects.all() }
def get(self, request):
return render(request, self.template, self.context)
home.html
{% for foo in bar %}
{{ foo.name }}
{{ foo.cost }}
{% endfor %}
如何通过刷新页面而不重新启动服务器来获取新数据?
答案 0 :(得分:1)
可以请您试试吗?
class Home(TemplateView):
template_name = 'home.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['bar'] = Baby.objects.all()
return context
答案 1 :(得分:1)
正如其他人所述,使用get_context_data()
方法是个好主意,因为ContextMixin
是父类(不是基类,而是TemplateView
的{{1}}的一部分 __mro__
的方法解析顺序),负责将数据从视图传递到模板。但是,如果您想使用TemplateView
方法手动渲染模板,则应在每个get()
请求(在您的情况下)上点击数据库。
GET
您的代码无效,因为class Home(TemplateView):
template = 'home.html'
def get(self, request):
self.context = {'bar': Baby.objects.all()}
return render(request, self.template, self.context)
变量仅初始化一次。在您的情况下,static
是静态变量。
希望,对您有帮助。