2012-09-22 64 views
0

我需要將成功提交重定向到特定頁面。如何使用反向URL正確重定向

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

一旦餐廳被創建,我想它重定向到預覽頁面到這個網址(假設是鼻涕蟲 '的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('/') 

我需要更改上面的代碼的最後一行。現在,我可以破解它來附加一些字符串和重定向,但我該如何以正確的方式做到這一點(使用命名的網址或反向網址?)。關於如何正確重定向的任何想法?

+2

URLconf中沒有任何參數。 –

回答

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) 
+0

使用['redirect'](http://django.me/redirect) - '返回重定向('restaurant_preview',slug = obj.slug)' –

+1

我更新了我的答案以使用重定向 –