1

Faced with such a problem, the exercise_new page does not display any form and does not display information from the DB.

enter image description here

#------------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'),

]
  • Please trim your code to make it easier to find your problem. Follow these guidelines to create a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). – Community Dec 08 '21 at 20:14

1 Answers1

1

You need to have:

{% if request.user.is_active %}

Instead of

{% if user.is_active %}

In your template.

Lewis
  • 2,718
  • 1
  • 11
  • 28
  • You can add a context processor for this so you don't have to use request.user, https://stackoverflow.com/questions/12824206/alternative-to-if-request-user-is-active-in-django-templates. So if they have this setup, then that wouldn't be an issue. – Xinthral Dec 03 '21 at 19:59