Делаю пет-проект на Django. Создал модель пользователя:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
agree = models.BooleanField (default=False)
Далее создал функцию согласия с пользовательским соглашением (знаю, не оптимально, но пока проблема не в этом):
@login_required
def accept(request):
# Получаем объект пользователя
user = request.user
# Пытаемся получить объект Profile
try:
user_profile = Profile.objects.get(user=user)
except Profile.DoesNotExist:
# Если объекта Profile нет, создаем его
user_profile = Profile.objects.create(user=user, agree=False)
# Устанавливаем согласие в True
user_profile.agree = True
user_profile.save()
return render(request, 'main/pricing.html', {'user_profile': user_profile})
Далее на странице html прописываю следующий код:
{% if user.is_authenticated %}
{% if user_profile.agree %}
<a class="silka" href="{% url 'proba' %}"><button type="button" class="sqrt7">Пробный период</button></a>
{% else %}
<a class="silka" href="{% url 'agreement' %}"><button type="button" class="sqrt7">Пробный период</button></a>
{% endif %}
{% else %}
<a class="silka" href="{% url 'register' %}"><button type="button" class="sqrt7">Пробный период</button></a>
{% endif %}
и он работает. Отображается верная ссылка для перехода. Однако, если я вернусь на главную страницу, и потом снова на страницу с ценами, то мне снова будет нужно соглашаться на пользовательское соглашение. (хотя запись в БД уже есть! но при возвращении {% if user_profile.agree %} выдает False. Что нужно сделать, чтобы условие продолжало работать при переходе между страницами?