You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django设置success_url后POST请求出现URL重复跳转失败问题

Django CreateView success_url 重复路径问题解决

问题出在你设置的success_url是相对路径,Django的CreateView在处理跳转时,会把这个相对路径拼接到当前请求的URL后面,导致路径重复。比如你提交表单的URL是/smart/notes/create/,跳转就会变成/smart/notes/create/smart/notes,也就是你看到的错误情况。

解决办法有两种:

  • 改成绝对路径,开头加上斜杠:
class NotesCreateView(CreateView):
    success_url = '/smart/notes'
    model = Notes
    form_class = NotesForm
  • 更规范的做法是使用reverse_lazy反转URL名称(推荐):
    先在你的urls.py里给目标URL配置一个name:
    path('smart/notes/', views.NotesListView.as_view(), name='notes-list')
    
    然后在CreateView中导入并使用:
    from django.urls import reverse_lazy
    
    class NotesCreateView(CreateView):
        success_url = reverse_lazy('notes-list')
        model = Notes
        form_class = NotesForm
    

这不是父类导致的问题,是Django处理相对路径的默认逻辑——CreateView继承的RedirectMixin里的get_success_url方法会自动拼接相对路径到当前请求URL之后,从而引发重复。

内容的提问来源于stack exchange,提问作者Mayur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:50:57