Отображение данных на динамической странице
Столкнувшись с такой проблемой, страница exercise_new не отображает никакой формы и не выводит информацию из БД.
введите описание изображения здесь
#------------views.py-----------#
def comment(request, pk):
"""Вывод полной статьи
"""
new = get_object_or_404(Exercise, pk=pk)
comment = Comments.objects.filter(new=pk, moderation=True)
if request.method == "POST":
form = CommentForm(request.POST)
if form.is_valid():
form = form.save(commit=False)
form.user = request.user
form.new = new
form.save()
return redirect(exercise, pk)
else:
form = CommentForm()
return render(request, "ProManager/exercise_new.html",
{"new": new,
"comments": comment,
"form": form})
#---------models.py------------#
class Comments(models.Model):
"""Ксласс комментариев к новостям
"""
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
verbose_name="Пользователь",
on_delete=models.CASCADE)
new = models.ForeignKey(
Exercise,
verbose_name="Новость",
on_delete=models.CASCADE)
text = models.TextField("Комментарий")
created = models.DateTimeField("Дата добавления", auto_now_add=True, null=True)
moderation = models.BooleanField("Модерация", default=False)
class Meta:
verbose_name = "Комментарий"
verbose_name_plural = "Комментарии"
def __str__(self):
return "{}".format(self.user)
#-----------------forms.py-------------#
class CommentForm(ModelForm):
"""Форма комментариев к статьям
"""
class Meta:
model = Comments
fields = ('text', )
#----------------exercise_new.html----------------#
<h4>Комментарии</h4>
{% for comment in comments %}
Пользователь - {{ comment.user }}<br>
{{ comment.text }} <br>
Добавлен - {{ comment.created }}<br><br>
{% endfor %}
{% if user.is_active %}
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Отправить</button>
</form>
{% else %}
<h4>Что бы оставить комментарий авторизуйтесь</h4>
{% endif %}
---------------------urls.py------------------
urlpatterns = [
path('exercise/<int:pk>/', ExerciseDetailView.as_view(), name='exercise-new'),
path('project/<int:pk>/', ProjectDetailView.as_view(), name='project-new'),
path('register',views.register_request, name="register"),
path('login', views.login_request, name="login"),
path('logout', views.logout_request, name= "logout"),
path('project', views.project, name="project"),
path('', views.project, name="project"),
path('exercise', views.exercise, name="exercise"),
path('contact', views.contact, name="contact"),
path('log', views.log, name="log"),
path('create_project',views.create_project, name="create_project"),
path('create_exercise',views.create_exercise, name="create_exercise"),
path('project/<int:pk>/update', views.ProjectUpdateView.as_view(), name='project_update'),
path('project/<int:pk>/delete', views.ProjectDeleteView.as_view(), name='project_delete'),
path('exercise/<int:pk>/update', views.ExerciseUpdateView.as_view(), name='exercise_update'),
path('exercise/<int:pk>/delete', views.ExerciseDeleteView.as_view(), name='exercise_delete'),
]
Вам необходимо иметь:
{% if request.user.is_active %}
Вместо
{% if user.is_active %}
В вашем шаблоне.