值通过表单提交,然后即使在提交值并显示之后,也会以表格形式显示提交的值

时间:2016-02-23 07:59:33

标签: javascript jquery python django

很抱歉这个长标题,但这就是: 我提交单词" hello",然后显示hello。然后在一个表格中,它仍然说"你好"。我不确定为什么会这样。这个django问题或一些javascript代码是否需要...?这里我的完整代码我认为是导致这个问题。 在我的views.py

def post(request, slug):
        user = get_object_or_404(User,username__iexact=request.user)
        try:
            profile = MyProfile.objects.get(user_id=request.user.id)
            # if it's a OneToOne field, you can do:
            # profile = request.user.myprofile
        except MyProfile.DoesNotExist:
            profile = None
        post = get_object_or_404(Post, slug=slug)
        post.views += 1  # increment the number of views
        post.save()      # and save it
        path = request.get_full_path()
        comments = Comment.objects.filter(path=path)
        #comments = post.comment_set.all()
        comment_form = CommentForm(request.POST or None)
        if comment_form.is_valid():
            parent_id = request.POST.get('parent_id')
            parent_comment = None
            if parent_id is not None:
                try:
                    parent_comment = Comment.objects.get(id=parent_id)
                except:
                    parent_comment = None
            comment_text = comment_form.cleaned_data['comment']
            new_comment = Comment.objects.create_comment(
                user=MyProfile.objects.get(user=request.user),
                path=request.get_full_path(),
                text=comment_text,
                post = post,
                parent = parent_comment)

        for c in comments:
            c.get_children()


        context_dict = {
            'post' :post,
            'profile' :profile,
            'comments' : comments,
            'comment_form':comment_form

        }

        return render(request, 'main/post.html', context_dict)

在我的post.html中我有

<table class='table'>

{% for comment in comments %}

<tr><td>{{ comment.get_comment }} 
<br/><small>via {{ comment.user }} | {{ comment.timestamp|timesince }} ago </small>
        {% if not comment.is_child %}
        <ul>
        {% for child in comment.get_children %}
        <li>{{ child.get_comment }} 
        <small>via {{ child.user }}</small>


        </li>
        {% endfor %}
        </ul>
        <a href='#' class='reply_btn'>Reply</a>
        <div class='reply_comment'>
        <form method="POST" action=''>{% csrf_token %}
        <input type='hidden' name='parent_id' value='{{ comment.id }}' />
        {{ comment_form.as_p }}
        <input type='submit' class='btn btn-default' value='Add reply'/>
        </form>
        </div>
        {% endif %}


</td></tr>

{% endfor %}

</table>
</div>



<div class = "col-sm-3">

</div>

    {% include 'footer.html' %}


<script>
{% block jquery %}
$('.reply_btn').click(function(e){
  e.preventDefault();
  $(this).next(".reply_comment").fadeToggle();
  // $(".reply_comment").fadeToggle();
})
{% endblock %}
</script>

{% endblock %}

有人可以指导我在哪里看看.....谢谢

1 个答案:

答案 0 :(得分:0)

在检查表单是否有效之前,请指定表单以包含POST数据,以便在返回表单时仍然包含此表单(如果需要显示错误)。最简单的解决方法是在完成有效逻辑后重新分配表单。

   comment_form = CommentForm(request.POST or None)
    if comment_form.is_valid():
        .. Valid logic ..
        comment_form = CommentForm()