问题描述
TypeError at /articles/1/leave_comment/
Comment() got an unexpected keyword argument 'comment_text'
Request Method: POST
Request URL: http://127.0.0.1:8000/articles/1/leave_comment/
Django Version: 3.0.1
Exception Type: TypeError
Exception Value:
Comment() got an unexpected keyword argument 'comment_text'
Exception Location: C:\Users\Dima\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\base.py in __init__, line 500
Python Executable: C:\Users\Dima\AppData\Local\Programs\Python\Python38\python.exe
意见
from django.shortcuts import render
from .models import Article, Comment
from django.http import HttpResponseRedirect, Http404
from django.urls import reverse
def index(request):
latest_articles_list = Article.objects.order_by('-pub_date')[:5]
return render(request, 'articles/list.html', {'latest_articles_list': latest_articles_list})
def detail(request, article_id):
try:
a = Article.objects.get(id = article_id)
except:
raise Http404('Статья не найдена')
return render(request, 'articles/detail.html', {'article': a})
def leave_comment(request, article_id):
try:
a = Article.objects.get(id = article_id)
except:
raise Http404('Статья не найдена')
a.comment_set.create(author_name = request.POST['name'], comment_text = request.POST['text'])
return HttpResponseRedirect( reverse('articles:detail', args(a.id,)) )
详细信息.html
{% extends 'base.html' %}
{% block title %}{{article.article_title}}{% endblock %}
{% block content %}
<h2>{{article.article_title}}</h2>
<p>{{article.article_text}}</p>
<em>{{article.pub_date}}</em>
<hr>
<form action="{% url 'articles:leave_comment' article.id %}" method="POST">
{% csrf_token %}
<input type="text" required placeholder="Ваше имя" name="name"><br>
<textarea name="text" required="" placeholder="Текст комментария" cols="30" rows="10"></textarea></br>
<button type="submit">Оставить комментарий</button>
</form>
{% endblock %}
标签: pythondjango
解决方案
推荐阅读