UpdateView不会重定向到基于类的视图中定义的success_url

时间:2018-04-24 16:29:35

标签: django django-views

当我在更新视图中发帖时,这会重定向到另一个网址,但不会重定向到我想要的网址。我有一个名为project的应用程序。 这是我的project.urls.py

urlpatterns = [
    ...
    path('edit/<int:pk>', ProjectUpdateView.as_view(), name='project_update'),
    path('detail/<int:pk>', ProjectDetailView.as_view(), name='project_detail'),
    ...
]

这是我的views.py

class ProjectUpdateView(UpdateView):
    model = Project
    ...

    def get_success_url(self):
        return reverse_lazy('project_detail', kwargs={'pk': self.object.pk})

我的models.py

class Project(models.Model):
    name = models.CharField(max_length=100)
    ...
    def get_absolute_url(self):
        return reverse('project_detail', kwargs={'pk': self.pk})

当我对此网址/edit/5发帖时,我会将我重定向到/edit,此页面返回404错误,当然因为此网址不存在。 我怎样才能解决这个问题?我正在使用django 2.0

更新 这是我的模板project_edit.html

<form method='post'>
    {% csrf_token %}
    {{ form.as_p }}
    <button type='submit' class='btn'>Aceoptar</button>
</form>

1 个答案:

答案 0 :(得分:1)

我认为这与您的get_success_url或get_absolute_url`方法无关。

听起来你的表单行为是:

<form method="post" action=".">

由于您是从/edit/5发帖(没有斜杠),这意味着您要发布到/edit/

您可以将其更改为:

<form method="post" action="">

或反转网址

<form method="post" action="{% url 'project_update' project.pk %}">