Шаблоны Django не обновляются после изменения базы данных через администратора - PullRequest
0 голосов
/ 07 июня 2019

Я использую администратор Django v2.2, чтобы изменить информацию в моей базе данных, но после того, как я изменил ее и обновил страницу, новых данных там нет, только старые данные.

Исправление для этого, если я перезагружаю сервер, теперь шаблоны могут получать новые введенные мной данные.

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 ]

1 голос
/ 07 июня 2019

Как уже упоминалось, рекомендуется использовать метод get_context_data(), поскольку ContextMixin является родительским классом (не базовым классом, а частью TemplateView '__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 переменные инициализируются только один раз.В вашем случае context была статической переменной.

Надеюсь, это вам поможет.

1 голос
/ 07 июня 2019

Можете ли вы попробовать это?

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
...