【问题标题】:editing post, it almost works but when I click final edit button it takes me to 404 page, why? (deleting works fine)编辑帖子,它几乎可以工作,但是当我单击最终编辑按钮时,它会将我带到 404 页面,为什么? (删除工作正常)
【发布时间】:2016-01-23 15:32:42
【问题描述】:

我有这个代码

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()

它几乎可以工作,只有发布的用户可以编辑,我遵循相同的删除方法,它工作正常。我只是不确定为什么它不能用于编辑表单。当用户去编辑 url 时,它会显示与 post 表单相同的编辑表单。但是当用户单击编辑按钮时,它会将我带到不存在的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/”

【问题讨论】:

  • 请加urls.py
  • 你需要展示带有表单动作属性的模板。

标签: python django


【解决方案1】:

表单中的action是将表单数据提交到的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">

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

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 2018-08-09
  • 1970-01-01
  • 2022-11-27
相关资源
最近更新 更多