为了账号安全,请及时绑定邮箱和手机立即绑定

form.save() 不工作我的 form.save 更新数据不工作

form.save() 不工作我的 form.save 更新数据不工作

湖上湖 2023-02-22 17:00:17
form.save() 不工作我的 form.save 更新数据不工作当我尝试更新我的帖子它显示原始未经编辑的帖子它发送保存更新的版本。我不知道是什么导致错误 idk 如果它的视图或任何在模板如果有人可以提供帮助,我将不胜感激,请提供帮助。这是代码:views.pyfrom django.shortcuts import renderfrom django.shortcuts import HttpResponseRedirectfrom .models import Postfrom .forms import PostFormdef post_list(request):    posts = Post.objects.all()    context = {        'post_list': posts    }    return render(request, "posts/post_list.html", context)def post_detail(request, post_id):    post = Post.objects.get(id=post_id)    context = {        'post': post    }    return render(request, "posts/post_detail.html", context)def post_create(request):    form = PostForm(request.POST or None)    if form.is_valid():        form.save()        return HttpResponseRedirect('/posts')    context = {        "form": form,        "form_type": 'Create'    }    return render(request, "posts/post_create.html", context)def post_update(request, post_id):    post = Post.objects.get(id=post_id)    form = PostForm(request.POST or None, instance=post)    if form.is_valid():        form.save()        return HttpResponseRedirect('/posts')    context = {        "form": form,        "form_type": 'Update'    }    return render(request, "posts/post_update.html", context)def post_delete(request, post_id):    post = Post.objects.get(id=post_id)    post.delete()    return HttpResponseRedirect('/posts')urls.pyfrom django.urls import pathfrom .views import post_list, post_detail, post_create, post_update, post_deleteurlpatterns = [    path('', post_list),    path('create/', post_create),    path('<post_id>/', post_detail),    path('<post_id>/update', post_update),    path('<post_id>/delete', post_delete),]post_update.html<h1>welcome to post {{ form_type }}</h1><form method="POST" action=".">    {% csrf_token %}    <p>{{ form.as_p }}</p>    <button type="submit">{{ form_type }}</button></form>
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

action="."带你从<post_id>/update<post_id>/。您可以通过几种方式解决此问题:

  1. 将其更改为action="",这将从提交<post_id>/update<post_id>/update

  2. 在 URL 中添加斜杠,即path('<post_id>/update/', ...). 然后action="."将从提交<post_id>/update/<post_id>/update/

  3. 使用{% url %}标签而不是对操作进行硬编码。在你的情况下,你需要做一些改变,所以我将把它作为一个挑战留给你。有关反转 URL 的文档应该有所帮助。


查看完整回答
反对 回复 2023-02-22
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号