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()},
)