2012-07-11 2 views
0

저는 장고를 매우 신 'm습니다. 내 웹 사이트에서처럼 그것을 할 수있는 방법이있다, 나는 그래서 내 생각은 사용자가. 로그인 한 경우 표시 데이터베이스에서 어떤 정보를 가지고 있었다이장고에있는 @login_required 함수

#views.py 
def index(request): 
.... 
if request.user.is_authenticated: 
    #do something 
else 
    #something else 

그런 짓을하려고했던 그리고 궁금 해서요 그 :

#views.py 
def index(request): 
.... 
    @login_required 
    #do something 
.... 
#do something else for everybody 

또는 그렇게하는 것이 좋지 않은 생각이라면 다른 방법으로 나에게 아이디어를주세요. 어떻게 든 urls.py를 변경해야 할 수도 있습니다.

감사합니다.

+0

실제로 @ login_required가하는 유일한 확인은'u.is_authenticated()'입니다. https://github.com/django/django/blob/master/django/contrib/auth/decorators.py – Tisho

답변

1

@login_required은 전체 기능 (컨트롤러,보다 구체적으로)에서 사용해야합니다. 첫 번째 코드 블록은 잘못된 들여 쓰기를 제외하고 원하는 것을 수행하는 올바른 방법입니다.

@login_required 
def do_something(request): 
    pass 

def do_something_else(request): 
    pass 

def index(request): 
    if request.user.is_authenticated: 
    do_something(request) 
    else 
    do_something_else(request) 

을하지만 사용자가 인증 된 경우 do_something 만 실행되므로이 ​​경우이 장식은 필요하지 않습니다 :

당신은 @login_required 장식과 별도의 기능을 만들 수 있습니다. 그러나 너무 많은 보안은 악의가 아닙니다.

+0

답변 주셔서 감사합니다. 하지만 @login_required로 래핑되고 다른 함수에 넣는 것과 같은 별도의 함수를 만드는 것과 같은 작업을 수행 할 수 있습니까? 그렇다면 어떻게이 함수를 호출 할 수 있습니까? – Vor

+0

예, 내 업데이트를 참조하십시오. –

+0

오, 잘됐다 !!!!! 고마워요! – Vor