Python 我在django中的评论表单不起作用?它没有向数据库发送数据,也没有显示这些数据?
我试图在django制作一个评论表单,人们可以在我的锅下面发表评论,我尝试了很多东西,但没有得到一个合适的解决方案。我希望我能在这里得到这个 这是我的模型供评论Python 我在django中的评论表单不起作用?它没有向数据库发送数据,也没有显示这些数据?,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我试图在django制作一个评论表单,人们可以在我的锅下面发表评论,我尝试了很多东西,但没有得到一个合适的解决方案。我希望我能在这里得到这个 这是我的模型供评论 class Comments(models.Model): post = models.ForeignKey('app.Post', related_name='comments') author = models.CharField(max_length=200) text = models.TextField
class Comments(models.Model):
post = models.ForeignKey('app.Post', related_name='comments')
author = models.CharField(max_length=200)
text = models.TextField()
这是评论的表格
from django import forms
from .models import Comments
class CommentForm(forms.ModelForm):
class Meta:
model = Comments
fields = '__all__'
widgets = {
'comment':forms.Textarea(attrs = {'class':'form-control'}),
'name':forms.TextInput(attrs = {'class':'form-control'})
}
Here,s the views.py code
class BlogDetail(DetailView):
model = Post
context_object_name = 'blog_object'
template_name = 'app/blog.html'
def add_comments(request, pk):
if request.method == 'POST':
email = request.POST['email']
text = request.POST['text']
form = CommentForm()
form.email = email
form.text = text
form.save()
return render(request,'app/blog.html')
最后,这里是我的blog.html的评论部分
<div id="comments" class="comments-area">
<div id="respond" class="comment-respond">
<h3 id="reply-title" class="comment-reply-title">Leave a Comment</h3>
<form action="#" method="post" id="commentform" class="comment-form" novalidate="">
{% csrf_token %}
<div class="form-group form-group-with-icon comment-form-email">
<input id="email" class="form-control" name="email" type="text" placeholder="Your Email" value="" size="10" aria-required="true">
<div class="form-control-border"></div>
<i class="form-control-icon fa fa-envelope"></i>
</div>
<div class="form-group form-group-with-icon comment-form-message">
<textarea id="comment" class="form-control" name="comment" placeholder="Your
Comment" cols="2" rows="8" aria-required="true" style="resize: none;"></textarea>
<div class="form-control-border"></div>
<i class="form-control-icon fa fa-comment"></i>
</div>
<p class="form-submit">
<input name="submit" type="submit" id="submit" class="submit" value="Post Comment/">
</p>
</form>
</div>
</div>
留言
{%csrf_令牌%}
您的模型没有电子邮件字段,您应该检查您的表单是否有效,然后保存它
class InstallmentForm(ModelForm):
class Meta:
model = InstallmentModel
fields = ['nationalNumber']
#if use FormView
class InstallmentView(generic.FormView):
form_class = InstallmentForm
def form_invalid(self, form):
return super(InstallmentView, self).form_invalid(form)
def form_valid(self, form):
# statements
return super(InstallmentView, self).form_valid(form)
或者,您可以以表单形式传递数据,然后对其进行验证:
class InstallmentView(generic.TemplateView):
def post(self, request, *args, **kwargs):
nationalNumber = request.POST['nationalNumber']
form = InstallmentForm(data={
'nationalNumber': nationalNumber
})
if form.is_valid():
InstallmentModel.objects.create(
nationalNumber=nationalNumber
)
#OR
form.save()
您的模型没有电子邮件字段,您应该检查您的表单是否有效,然后保存它
class InstallmentForm(ModelForm):
class Meta:
model = InstallmentModel
fields = ['nationalNumber']
#if use FormView
class InstallmentView(generic.FormView):
form_class = InstallmentForm
def form_invalid(self, form):
return super(InstallmentView, self).form_invalid(form)
def form_valid(self, form):
# statements
return super(InstallmentView, self).form_valid(form)
或者,您可以以表单形式传递数据,然后对其进行验证:
class InstallmentView(generic.TemplateView):
def post(self, request, *args, **kwargs):
nationalNumber = request.POST['nationalNumber']
form = InstallmentForm(data={
'nationalNumber': nationalNumber
})
if form.is_valid():
InstallmentModel.objects.create(
nationalNumber=nationalNumber
)
#OR
form.save()
您忘记将实际数据传递给表单
form = CommentForm(data={ "email": email, "text": text })
if form.is_valid()
instance = form.save(commit=False)
instance.author = request.user
instance.save()
您忘记将实际数据传递给表单
form = CommentForm(data={ "email": email, "text": text })
if form.is_valid()
instance = form.save(commit=False)
instance.author = request.user
instance.save()
嘿,兄弟,它还是不起作用。。我不知道如何将这两个URL映射到相同的URL。两天过去了,我很沮丧。。基本上,我有一个显示帖子的详细视图,下面有一个评论部分,我试图在该详细视图中获取帖子请求,它显示了错误,然后我为评论创建了一个不同的视图,但我不知道如何将该视图映射到同一页面和同一URL,以及如何将其插入HTML。嘿,兄弟,它仍然不起作用。。我不知道如何将这两个URL映射到相同的URL。两天过去了,我很沮丧。。基本上,我有一个显示帖子的详细视图,下面是评论部分,我试图在该详细视图中获取帖子请求,它显示了错误,然后我为评论创建了一个不同的视图,但我不知道如何映射到同一页面和同一URL,以及如何在HTML中插入该内容。。