Почему Django не публикует правильную форму? - PullRequest
0 голосов
/ 29 марта 2020

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

<h3>Leave a comment</h3>
            <form method="post" style="margin-top: 1.3em;">
                {{ comment_form.as_p }}
                {% csrf_token %}
                <button type="submit" class="btn btn-primary  btn-lg">Submit</button>
            </form

Однако форма не отображается - между 'Leave нет ничего комментарий »и кнопка« Отправить »на странице. Я не понимаю этого, поскольку моя форма в forms.py, кажется, настроена правильно:

class CommentForm(forms.ModelForm):
body = forms.CharField(help_text="What is your comment?", widget=forms.TextInput(attrs={'size': '1000'}),
                       required=True)

class Meta:
    model = Comment
    fields = ('body',)
def as_p(self):
    # Returns this form rendered as HTML <p>s.
    return self._html_output(
        normal_row='<p%(help_text)s<p></p>%(field)s</p>',
        error_row='%s',
        row_ender='</p>',
        help_text_html=' <span class="helptext">%s</span>',
        errors_on_separate_row=True)`

Так же как и моя модель в models.py:

    class Comment(models.Model):
COMMENT_MAX_LENGTH = 1000
image = models.ForeignKey(Picture, on_delete=models.CASCADE, related_name="comments")
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
body = models.TextField(max_length=COMMENT_MAX_LENGTH)
created_on = models.DateTimeField(auto_now_add=True)
active = models.BooleanField(default=False)

class Meta:
    ordering = ['created_on']

def __str__(self):
    return 'Comment {} by {}'.format(self.body, self.user)

Я бы действительно Спасибо за любые предложения, которые может предложить любой.

ОБНОВЛЕНИЕ: Когда я go в исходный код на сайте, это показывает, что форма скрыта. Кроме того, когда я изменяю comment_form.as_p на что-то случайное, сообщения об ошибках не генерируются. Как будто что-то заставляет Django пропустить этот бит кода.

Спасибо

Джефф

...