我有这个代码
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/