【发布时间】:2021-07-28 23:06:44
【问题描述】:
我想从一个特定的 html 中添加 cmets,它有自己的视图和模型,我不想创建一个新的 html 文件,如 comment.html,它只会显示表单及其视图。我希望用户能够在帖子下方发表评论,这样用户就不必单击“添加评论”之类的按钮,这会将他们带到带有“comment.form”的新页面,然后他们可以发表评论.基本上想要一个包含所有转会新闻及其各自的 cmets 的页面以及旧评论下的评论表单。但我被困住了。我可以从管理页面手动添加 cmets,它工作正常,但似乎我必须创建另一个 url 和 html 文件来显示评论表单并让用户能够添加 cmets(顺便说一句,我正在尝试构建一个体育相关网站)。提前致谢!
我的models.py:
class Transfernews(models.Model):
player_name = models.CharField(max_length=255)
player_image = models.CharField(max_length=2083)
player_description = models.CharField(max_length=3000)
date_posted = models.DateTimeField(default=timezone.now)
class Comment(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
transfernews = models.ForeignKey(Transfernews, related_name="comments", on_delete=models.CASCADE)
body = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '%s - %s' % (self.transfernews.player_name, self.user.username)
我的 forms.py :
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('body', 'transfernews')
我的views.py:
def addcomment(request):
model = Comment
form_class = CommentForm
template_name = 'transfernews.html'
def transfer_targets(request):
transfernews = Transfernews.objects.all()
form = CommentForm(request.POST or None)
if form.is_valid():
new_comment = form.save(commit=False)
new_comment.user = request.user
new_comment.save()
return redirect('transfernews/')
return render(request, 'transfernews.html', {'transfernews': transfernews})
我的 urls.py:
path('transfernews/', views.transfer_targets, name='transfernews'),
我的 transfernews.html:
<h2>Comments...</h2>
{% if not transfernew.comments.all %}
No comments Yet...
{% else %}
{% for comment in transfernew.comments.all %}
<strong>
{{ comment.user.username }} - {{ comment.date_added }}
</strong>
<br/>
{{ comment.body }}
<br/><br/>
{% endfor %}
{% endif %}
<hr>
<div>Comment and let us know your thoughts</div>
<form method="POST">
{% csrf_token %}
<input type="hidden" value="{{ transfernew.id}}">
<div class="bg-alert p-2">
<div class="d-flex flex-row align-items-start"><textarea class="form-control ml-1 shadow-none textarea"></textarea></div>
<div class="mt-2 text-right"><button class="btn btn-primary btn-sm shadow-none" type="submit"> <a href="{% url 'comment' %}"></a>
Post comment</button><button class="btn btn-outline-primary btn-sm ml-1 shadow-none" type="button">Cancel</button></div>
</div>
</div>
</form>
【问题讨论】:
-
您的视图有问题。它是基于类的视图吗?因为现在,它不会返回任何东西。可以发一下
Transfernews详情页的视图吗? -
编辑并添加了 transfernews 视图
标签: django django-models django-views django-forms