通过管理员更改数据库后,Django模板未更新

时间:2019-06-07 05:53:56

标签: django django-templates django-views

我正在使用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 %}

如何通过刷新页面而不重新启动服务器来获取新数据?

2 个答案:

答案 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是静态变量。

希望,对您有帮助。