django 更新“success_url”会在POST方法执行后添加两次内容

6rqinv9w  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(91)

我试图添加一个函数,它将在数据库中添加条目,它添加数据没有任何问题,但是,当我用我想要它重定向的页面更新sucess_url时,Django复制了变量中的url文本:

`class NotesCreateView(CreateView):
    success_url = 'smart/notes'
    model = Notes
    # fields = ['title', 'text']
    form_class = NotesForm`

字符串
它失败,并出现Page Not found错误,因为success_url被发送回'smart/notes/smart/notes'而不是'smart/notes'。
我尝试更新空白值,调试edit.py,但是无法找到问题的根本原因。
是否有任何父类会导致此问题?

tkqqtvp1

tkqqtvp11#

如果你重定向/链接到一个没有 * 前导斜杠 *(/)的路径,它会将其附加到当前路径,即所谓的 * 相对路径 *。
因此,您应该使用 * 绝对 * 路径,因此:

class NotesCreateView(CreateView):
    success_url = '/smart/notes'
    model = Notes
    form_class = NotesForm

字符串
然而,使用**reverse_lazy(…)**[Django-doc]可能会更好,因此可以使用视图的 name

from django.urls import reverse_lazy

class NotesCreateView(CreateView):
    success_url = reverse_lazy('view-name')
    model = Notes
    form_class = NotesForm

相关问题