@Ivan-Proger
Начинающий Python/Django разработчик.

Как отобразить форму для комментариев на странице с помощью html шаблона в блоке {{ form }}?

Привет, создал модель форми, саму форму и обработку данных во views.py, хочу ее отобразить на странице c помощью html шаблона в блоке {{ form }} но ничего не происходит.

Модель:
class Comment(models.Model):
    product = models.ForeignKey('Product', on_delete=models.CASCADE, related_name='comments', db_column=None)
    name = models.CharField(max_length=50)
    email = models.EmailField(max_length=50)
    text = models.TextField()
    date_pub = models.DateTimeField(auto_now_add=True)
    approved_comment = models.BooleanField(default=False)


views:
def comment(request, pk):
    post = get_object_or_404(Product, pk=pk)    
    if request.method == 'POST':                
        form = CommentForm(request.POST)       
        if form.is_valid():                   
            comm = form.save(commit=False)   
            comm.post = post               
            comm.save()                      
    else:
        form = CommentForm()                  
    return render(request, 'App/Product_information.html', {'post': post, 'form': form})


forms:
from django.forms import ModelForm
from .models import Comment


class CommentForm(ModelForm):
    class Meta:
        model = Comment
        fields = ('name', 'text', 'email')


Шаблон:
{% extends 'base.html' %}
{% block content %}
<form action=""  method="post" class="post-form">
                {% csrf_token %}
                {{ form }}
</form>
{% endblock %}
  • Вопрос задан
  • 217 просмотров
Пригласить эксперта
Ответы на вопрос 1
@deniz1983
...
Во view блок с else и return должны быть на одном уровне с if request.method == POST. Сейчас форма у вас не рендерится, потому что вы прописали условие «срендерить форму если данные отправили методом post»
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы