0

我需要将成功提交重定向到特定页面。

urlpatterns = patterns('',
url(r'create/$', RestaurantCreate.as_view(), name='restaurant_create'),
url(r'preview/$', RestaurantPreview.as_view(), name='restaurant_preview'),

)

创建餐厅后,我想将其重定向到预览页面到此 url(假设 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?)。关于如何正确重定向的任何想法?

4

1 回答 1

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)
于 2012-09-22T04:54:24.287 回答