Django обновляет записи в шаблоне только после повторного запуска сервера

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

python manage.py runserver

views.py

    def createStudent(request):
    form = StudentForm()
    if request.method == "POST":
        form = StudentForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect("homePage")
    context = {"form": form}
    return render(request, "pages/addStudent.html", context)

models.py

class Students(models.Model):
    name = models.CharField(max_length=200)
    surname = models.CharField(max_length=200)
    card_id = models.IntegerField()
    unique_id = models.UUIDField(
         default=uuid.uuid4, 
         unique=True,
         primary_key=True, 
         editable=False)
    student_image = models.ImageField(null=True, blank=True, default="default_student.jpg")
    class Meta:
        verbose_name_plural = 'Students'

    #Methods
    def __str__(self):
        return f'{self.name} {self.surname}'

addStudent.html

{% extends "main.html" %}

{% block addStudent %}
    <form method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        {{form.as_p}}
        <input type="submit"/>
    </form>
{% endblock addStudent %}

Думаю, эта ошибка появилась после того, как я начал работать со статическими файлами и добавил

student_image = models.ImageField(null=True, blank=True, default="default_student.jpg")

Кто-нибудь сталкивался с этой проблемой раньше?

Вам нужно выполнять запрос student_data при каждом запросе, в настоящее время он выполняется только один раз, и результаты первого запроса используются повторно. Вы можете сделать это двумя способами:

Во-первых, вы можете вызвать .all() на кверисет, чтобы выполнить его снова, если вы хотите сохранить student_data в качестве глобальной переменной

from django.shortcuts import render

from .models import Students

student_data = Students.objects.all()


def homePage(request):
    return render(
        request,
        "pages/homePage.html",
        {"student_data": student_data.all()},
    )

Во-вторых, вы можете определять queryset при каждом обращении к представлению для получения свежих данных

from django.shortcuts import render

from .models import Students


def homePage(request):
    return render(
        request,
        "pages/homePage.html",
        {"student_data": Students.objects.all()},
    )
Вернуться на верх