@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»
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
30 нояб. 2024, в 19:32
8000 руб./за проект
30 нояб. 2024, в 19:28
5000 руб./за проект
30 нояб. 2024, в 18:45
1500 руб./за проект