2013-10-24 3 views
2

그래서 쿼리에서 사람의 정보를 잡고 페이지에 정보를 반환하는 뷰를 가지고 :장고 옵션보기 매개 변수 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) 

, 나는 두 번째보기에서 온 경우가 있다면, 그것은 True로 if_random 매개 변수를 설정되도록 첫 번째보기가 인식 할,하지만 난 정확히 모르겠어요 어떻게해야하는지.

내 URL은 :

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

답변

3

당신은 URL 매개 변수로 if_random 통과 할 필요가 없습니다.

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 파라는 선택 사항이기 때문에

, 나는 (실제로는 더 복잡한 정규식 EXPR 하나에이 두 패턴을 결합 할 수 있지만, 가독성 계산됩니다.). 당신이 film_chart_view 2 개 분리 패턴을 작성하는 것이 좋습니다

urlconf :

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: 
     ...