Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我在django中的评论表单不起作用?它没有向数据库发送数据,也没有显示这些数据?_Python_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Python 我在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

我试图在django制作一个评论表单,人们可以在我的锅下面发表评论,我尝试了很多东西,但没有得到一个合适的解决方案。我希望我能在这里得到这个

这是我的模型供评论

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中插入该内容。。