2013-10-24 80 views
2

所以我必須從查詢抓住一個人的信息,並返回信息的頁面視圖:Django的可選視圖參數HttpResponseRedirect

def film_chart_view(request, if_random = False): 

我也有隨機抓住一個人的信息和重定向視圖其上述觀點:

def random_person(request): 
     . 
     . 
     return HttpResponseRedirect(reverse('home.views.film_chart_view')+"?q="+get_person.short) 

不過,我想第一種觀點認識到,如果它從第二視圖來了,所以,如果是,它設置if_random參數設置爲True,但我不完全當然如何做到這一點。

我的網址:

url(r'^film_chart_view/$', 'home.views.film_chart_view'), 
url(r'^random/$', 'home.views.random_person'), 

回答

3

你不必通過if_random作爲URL參數。

def random_person(request): 
    return HttpResponseRedirect(
     reverse('home.views.film_chart_view') + \ 
     "?q=" + get_person.short + \ 
     "&is_random=1" 
    ) 

def film_chart_view(request): 
    is_random = 'is_random 'in request.GET 

但是,如果你更喜歡url參數,解決方案會更復雜一點。

傳遞給視圖函數的參數來自url模式,您首先需要設置它們。

因爲is_random段是可選的,我建議你寫2種分開的圖案爲film_chart_view。(其實你可以用更復雜的正則表達式EXPR這2種模式結合起來,一個,但可讀性計數。)

URL配置:

url(r'^film_chart_view/$', 'home.views.film_chart_view', name ='film_chart_view'), 
url(r'^film_chart_view/(?P<is_random>.*)/$', 'home.views.film_chart_view', name ='film_chart_view_random'), 
url(r'^random/$', 'home.views.random_person'), 


def random_person(request): 
    return HttpResponseRedirect(
     reverse('home.views.film_chart_view', kwargs={'is_random': '1'}) + \ 
     "?q=" + get_person.short 
    ) 

視圖參數(除請求)始終爲字符串,你需要將其轉換爲int /布爾/ ...在你的代碼。

def film_chart_view(request, is_random=None): 
    if is_random: 
     ... 
相關問題