저는 base.html 템플릿 페이지에 로그인 상자가있는 사이트를 개발하고 있습니다. 사용자가 로그인해야하는 모든 페이지에 대해 login_required 데코레이터를 사용하고 있습니다. 그러나 사용자가 원하는 경우 다른 페이지에 로그인 할 수있게하고 싶습니다.login_optional 데코레이터?
"login_required"데코레이터가하는 일은 원하는 페이지를 표시하기 전에 로그인했는지 확인하는 것 이외에 로그인의 요령과 볼트를 처리하는 것입니다.
내가 원하는 것은 이러한 선택적 페이지에 대한 "login_optional"데코레이터 (또는 login_required 내의 선택적 매개 변수)입니다. 나는 그런 것을 발견 할 수 없다. 그것이 존재하고 나는 그것을 잃어 버렸을 뿐인가, 아니면 이러한 뷰를 위해 자신의 로그인 처리 루틴을 롤백해야합니까?
감사
마이크
EDIT (샘플 코드)
템플릿
<form action="" method="post">
<label for="username">Username:</label>
<input type="text" name="username" value="" id="username" size="10"/>
<label for="password">Password:</label>
<input type="password" name="password" value="" id="password" size="10"/>
<input type="submit" value="Login"/>
<input type="hidden" name="next" value="{{ next|escape }}"/>
</form
>
로그인 필요한 코드
@login_required
def chooseDistributor(request):
user = request.user
# blah stuff deleted
# NOTHING TO HANDLE request.POST!
return render_to_response('choose_distributor.html',locals())
로그인 옵션 코드
def showWelcome(request):
user = request.user
return render_to_response('welcome/home.html',locals())
위의 EDIT를 참조하십시오. 즉, login_required 데코레이터가 로그인 폼의 POST 응답을 처리한다고 가정합니다. 물론 데코레이터가없고 다른 POST 처리 코드가없는 페이지는 로그인 작업을 처리 할 수 없습니다. login_required 데코레이터에서 적절한 코드를 복사 할 수는 있지만 DRY 원칙을 위반하므로 질문을합니다. – jamida
아니요, 로그인 데코레이터에는 로그인 POST 처리 코드가 포함되어 있지 않습니다. 로그인 데코레이터 만 해당 로그인 데코레이터를 처리합니다. 그러나 잘 작성된 로그인 페이지는 로그인 장식자를 사용하여 다시보기로 리디렉션합니다. 실제로, login_required 데코레이터는 어떤 로그인 핸들링 코드도 포함하지 않는다 : p. – KillianDS
예, 이제 보았고 이해합니다 ... >> blush << Thanks. – jamida