python - 编辑帖子,它几乎可以工作,但是当我单击最终编辑按钮时,它会将我带到 404 页面,为什么? (删除效果很好)

标签 python django

我有这个代码

class PostUpdateView(UpdateView):
     model = Post
     form_class = PostForm
     template_name = 'main/edit.html'

     def form_valid(self, form):
            self.object = form.save(commit=False)
            # Any manual settings go here
            self.object.save()
            return HttpResponseRedirect(self.object.get_absolute_url())

     @method_decorator(login_required)
     def dispatch(self, request, *args, **kwargs):
        post = Post.objects.get(slug=kwargs['slug'])
        if post.moderator == request.user:
            return super(PostUpdateView, self).dispatch(request, *args, **kwargs)
        else:
            return http.HttpForbidden()

它几乎可以工作,只有发布的用户可以编辑,我按照相同的方法进行删除,并且工作正常。我只是不确定为什么它不能用于编辑表单。当用户去编辑网址时,它会显示与帖子表单相同的编辑表单。但是当用户单击编辑按钮时,它会将我带到 http://127.0.0.1:8000/edit/不存在。但编辑网址是 http://127.0.0.1:8000/post/xx/edit/ 。当我写这个问题时,我意识到我的 edit.html <form id="post_form" method="post" action="/edit/" enctype="multipart/form-data"> 中有这个我应该改变行动吗?添加帖子的操作是“/add_post/”

最佳答案

表单中的操作是将表单数据提交到的 URL。你有,

<form id="post_form" method="post" action="/edit/" enctype="multipart/form-data">

因此表单将提交到 url /edit/

要将表单提交到/post/xx/edit/,您可以这样做

<form id="post_form" method="post" action="/post/{{ post.id }}/edit/" enctype="multipart/form-data">

如果编辑 URL 与帖子的绝对 URL 相同,则可以这样做

<form id="post_form" method="post" action="{{ post.get_absolute_url }}" enctype="multipart/form-data">

如果您要提交到当前网址,则可以完全省略该操作。

<form id="post_form" method="post" enctype="multipart/form-data">

关于python - 编辑帖子,它几乎可以工作,但是当我单击最终编辑按钮时,它会将我带到 404 页面,为什么? (删除效果很好),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965314/

相关文章:

python - 如何避免/防止 Python 中的请求出现 Max Redirects 错误?

python - OpenCV Python 中的变形操作

python - re.search 网页源中包含回车符的中间字符串会导致 Python 中出现错误

python - 显示上传的文件django

python - 使用 App Engine 数据存储查询 Django 表单的不同选择列表

python - 如何在 python 中使用 strip()

python - SimPy Resource of 3 每个都有不同的特性

python - 在 Django 中开始的事务

python - 夹层的菜单页

python - View app.views.MyWizard 未返回 HttpResponse 对象