django - Django,刷新页面上的表单重新提交?
问题描述
我正在开发一个 django 应用程序,当我提交表单时,它可以正常工作,但是当我刷新页面时,表单再次将数据重新提交到数据库,我已经尝试了一切我可以但似乎无法让它正常工作
我的观点
def _article(request, article_id):
try:
article = Article.objects.get(pk=article_id)
related_articles = Article.objects.filter(tags=article.tags).exclude(pk=article.pk)[:4]
context['article'] = article
context['related_articles'] = related_articles
context['comments'] = article.comments_set.all().order_by('-date')[:4]
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form.cleaned_data['comment']
article.comments_set.create(comment=comment)
return render(request,'blog/article.html',context)
else:
form = CommentForm()
context['form'] = form
return render(request,'blog/article.html', context)
except Exception as e:
#write error to file
return render(request,'blog/404.html')
解决方案
我认为您的问题与 _article 视图有关。尝试将代码更改为此
def _article(request, article_id):
if request.method == "POST":
form = CommentForm(request.POST)
if form.is_valid():
comment = form.cleaned_data['comment']
article.comments_set.create(comment=comment)
return HttpResponseRedirect("</your/url>")
return render(request,'blog/article.html',context))
................
推荐阅读
- react-native - 如何将 cURL 作为我的 webview 的来源
- azure - Azure DevOps 增量管道
- android - 我有一个更新,然后项目无法连接到 Web 服务。(它落在 catch 块上)
- gitlab - Gitlab从旧版本迁移到新版本
- amazon-web-services - Elastic Beanstalk 与 Classic Load Balancer 使用 HTTP 但不使用 HTTPS
- c# - 使用 LINQ.Dynamic 对数据进行排序
- spring - 从 Spring Cloud 配置服务器读取单个应用程序(客户端)的多个 .properties 文件
- angular - 使用@input 和@output 在角度组件之间传输数据
- c# - 如何直接上传文件到其他服务器
- ios - 表达式类型“@lvalue 字符串?” 没有更多上下文是模棱两可的