@GoncharovAlex
Юный падаван - Python/Django

Работа с пользовательскими данными | Комментарии для статьи?

Всем привет. Пытаюсь сделать комментарии для статей, но при вводе в форму и нажатии на кнопку Отправить комментарий открывается ссылка 127.0.0.1:8000/articles/addcomment/1 и комментарий не добавляется, хотя должен добавиться комментарий и открыться страница статьи на которую оставлен комментарий вида 127.0.0.1:8000/articles/get/1 .
urls.py:
url(r'^articles/addcomment/(?P<article_id>\d)/+$', 'article.views.addcomment'),

Сама форма в html странице:
<form action = '/articles/addcomment/{{ article.id }}/' method="post">
{% csrf_token %}
{{ form }}
<input type = 'submit' class = 'button' value="Добавить комментарий">
</form>

в models.py class:
class Comments(models.Model):
    class Meta:
        db_table = 'comments'
    text = models.TextField(verbose_name='Текст комметария')
    comments_article = models.ForeignKey(Article)

forms.py:
from django.forms import ModelForm
from article.models import Comments

class CommentForm(ModelForm):
    class Meta:
        model = Comments
        fields = '__all__'
        exclude = ['comments_article']

views.py
def addcomment(request, article_id):
    if request.POST:
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.comments_article = Article.objects.get(id=article_id)
            form.save()
    return redirect('/articles/get/%s/' % article_id)
  • Вопрос задан
  • 742 просмотра
Решения вопроса 1
sim3x
@sim3x
Не считай себя умнее разработчиков - данная функция нужна если тебе досталась бд внаследство
class Meta:
        db_table = 'comments'


старайся не использовать exclude
fields = ['text']

def addcomment(request, article_id):
    form = CommentForm(request.POST or None )
    if form.is_valid():
        comment = form.save(commit=False)
        comment.comments_article = Article.objects.get(id=article_id)
        form.save()
        # почитай reverse
        return redirect('/articles/get/%s/' % article_id)
    return render(request, 'template.html', {'form': form})


советую не учиться по данному ману
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@balamut108
Py
Привет, на канале shadrus в YouTube есть реализация блога с комментами. Реализацию можешь взять оттуда.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы