Django提交信息后如何重定向至指定页面?配置问题求助
解决CreateView提交后重定向到指定页面的问题
你遇到的问题核心是代码拼写错误+URL反向解析写法不正确,下面提供两种可靠的解决方式:
方法一:修正success_url属性
Django类视图初始化时URL配置可能还未加载完成,所以需要用reverse_lazy延迟解析URL,同时注意属性名的正确拼写:
from django.urls import reverse_lazy from django.views.generic.edit import CreateView from .models import Message class ModelCreateView(CreateView): model = Message fields=['message'] template_name = "page.html" # 修正拼写并使用reverse_lazy指定目标URL名称 success_url = reverse_lazy('page')
方法二:重写get_success_url方法
如果需要更灵活的重定向逻辑(比如根据创建的对象动态调整跳转路径),可以重写该方法:
from django.urls import reverse from django.views.generic.edit import CreateView from .models import Message class ModelCreateView(CreateView): model = Message fields=['message'] template_name = "page.html" def get_success_url(self): # 返回指定URL名称对应的路径 return reverse('page') # 若需动态传递参数,示例:return reverse('target-page', kwargs={'pk': self.object.pk})
补充说明
- 原代码中
succes_url = reverse='page'是双重错误:属性名拼写错误导致Django无法识别,且不能直接用reverse='page'这种语法,必须通过reverse或reverse_lazy生成合法的URL路径。 - 即使Model中定义了
get_absolute_url,只要View层设置了success_url或重写了get_success_url,Django会优先遵循View的配置,不会跳转到详情页。
内容的提问来源于stack exchange,提问作者Ibrohim Tojiboyev
相关产品推荐
相关产品推荐

