Django:刷新内容时再次发布[重复内容]

时间:2014-12-25 13:28:03

标签: python django django-forms django-views

我创建了一个应用程序来发布用户的评论,但在刷新页面时,最后发布的内容再次发布为重复...

models.py

class chat_content(models.Model):
    content = models.CharField(max_length=500)

    def __str__(self):
        return self.content

views.py

def home(request):
    if request.method != 'POST':
        ct_cnt = chat_content.objects.all()
        return render(request,'discussion/discussion_board.html',{'form':cont,'cnt':ct_cnt})
    else:
        form = cont(data=request.POST)
        form.save(commit=True)
        frm = cont()
        ct_cnt = chat_content.objects.all()
        print(ct_cnt)
        return render(request,'discussion/discussion_board.html',{'form':cont,'cnt':ct_cnt})

forms.py

class cont(forms.ModelForm):
    class Meta:
        model = chat_content
        fields = ('content',)

html的

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
Welcome to the public discussion
{% for c in cnt %}
<div>
    {{ c }}
</div>
{% endfor %}
<form action="." method="post" enctype="multipart/form-data" >
    {% csrf_token %}
    {{ form }}

</form>
</body>
</html>

刷新时如何避免重复?

例如

最后一条评论是:“欢迎所有人”

在刷新页面时,内容更新为重复内容并显示为:“welcome all”“welcome all”

我可以纠正这个副本? 有没有简单的方法在这段代码中使用ajax?

提前致谢..

1 个答案:

答案 0 :(得分:2)

您需要在发布后重定向到此页面,而不是显示HTML页面:

from django.shortcuts import redirect

form = cont(data=request.POST)
if form.is_valid():
    form.save()
    return redirect(home)

在这种情况下,用户将刷新GET页面,因此内容不会重复。