我需要将成功提交重定向到特定页面。
urlpatterns = patterns('',
url(r'create/$', RestaurantCreate.as_view(), name='restaurant_create'),
url(r'preview/$', RestaurantPreview.as_view(), name='restaurant_preview'),
)
创建餐厅后,我想将其重定向到此网址的预览页面(假设slug是'applebees'),如下所示:
http://127.0.0.1/restaurant/applebees/preview
这是我的RestaurantCreate课程:
class RestaurantCreate(CreateView):
form_class = RestaurantForm
template_name = 'restaurant_form.html'
success_url = 'success'
model = Restaurant
def form_valid(self, form):
obj = form.save(commit=False)
obj.slug = unique_slug(obj.name, Restaurant)
obj.created_by = self.request.user
obj.save()
return HttpResponseRedirect('/')
我需要更改上面代码的最后一行。现在,我可以破解它附加一些字符串并重定向,但我如何以正确的方式执行此操作(使用命名的url或反向url?)。关于如何正确重定向的任何想法?
答案 0 :(得分:1)
你的URLconf应该是这样的
urlpatterns = patterns('',
url(r'^create/$', RestaurantCreate.as_view(), name='restaurant_create'),
url(r'^(?P<slug>[-\w]+)/preview/$', RestaurantPreview.as_view(), name='restaurant_preview'),
)
您可以使用django.shortcuts.redirect
from django.shortcuts import redirect
def form_valid(self, form):
obj = form.save(commit=False)
obj.slug = unique_slug(obj.name, Restaurant)
obj.created_by = self.request.user
obj.save()
return redirect('restaurant_preview', slug=obj.slug)