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>/
。您可以通过几种方式解决此问题:
将其更改为
action=""
,这将从提交<post_id>/update
到<post_id>/update
。在 URL 中添加斜杠,即
path('<post_id>/update/', ...)
. 然后action="."
将从提交<post_id>/update/
到<post_id>/update/
使用
{% url %}
标签而不是对操作进行硬编码。在你的情况下,你需要做一些改变,所以我将把它作为一个挑战留给你。有关反转 URL 的文档应该有所帮助。
添加回答
举报
0/150
提交
取消