Django中的get_success_url()函数用于获取表单提交成功后重定向的URL地址。通过重定向,可以使用户在表单提交后跳转到其他页面,比如返回到之前的页面、跳转到展示提交结果的页面等。get_success_url()函数的使用非常灵活,可以自定义重定向的URL地址,也可以根据表单字段的值或其他条件动态生成URL。
使用方法
get_success_url()函数的使用需要在视图类中定义。首先在视图类中定义success_url属性,用于获取表单提交成功后重定向的默认URL地址。当表单提交成功后,如果没有通过get_success_url()函数设置具体的URL地址,则使用success_url属性指定的地址。可以在类中直接定义success_url属性,也可以通过一个函数来动态获取。示例代码如下:
from django.views.generic.edit import CreateView
class MyCreateView(CreateView):
model = MyModel
success_url = '/my/success/url/'
fields = ['field1', 'field2', 'field3']
def form_valid(self, form):
response = super(MyCreateView, self).form_valid(form)
# do something
return response
def get_success_url(self):
return self.kwargs['success_url']
在上面的代码中,CreateView是用于创建新数据的视图类。MyModel是需要创建的模型类,fields指定表单中需要填写的字段。success_url属性指定表单提交成功后需要重定向的默认URL地址。form_valid()是用于处理表单提交的方法,这里简单的调用了父类的方法,但是可以在这个方法中进行其他一些操作,比如发送邮件、通知其他系统等。最后,get_success_url()是用于获取重定向URL的方法,这里通过self.kwargs[‘success_url’]获取动态生成的URL。
示例
- 自定义重定向URL地址
from django.views.generic.edit import CreateView
class MyCreateView(CreateView):
model = MyModel
fields = ['field1', 'field2', 'field3']
def form_valid(self, form):
response = super(MyCreateView, self).form_valid(form)
# do something
return response
def get_success_url(self):
return '/my/success/url/'
在这个示例中,get_success_url()函数返回了一个固定的URL地址,即’/my/success/url/’。无论表单中填写的数据是什么,提交成功后都会重定向到这个地址。
- 根据表单字段生成重定向URL
from django.views.generic.edit import CreateView
class MyCreateView(CreateView):
model = MyModel
fields = ['field1', 'field2', 'field3']
def form_valid(self, form):
response = super(MyCreateView, self).form_valid(form)
# do something
return response
def get_success_url(self):
obj = self.object
return f'/my/{obj.field1}/{obj.field2}/success/url/'
在这个示例中,get_success_url()函数根据表单字段生成重定向URL,地址包含了表单中field1和field2字段的值。在这种情况下,每次提交成功后都会跳转到不同的URL地址,URL地址的生成规则可以通过跟进实际需求进行扩展。