2013-04-10 2 views
0

내 템플릿에서 루트 경로 변수에 액세스하고 싶습니다. 어떻게해야합니까?django 템플릿 : 프로젝트 루트 경로에 액세스

{% if user.username == "" and request.path != "/login/" and request.path != "/" %} 
    <meta http-equiv="REFRESH" content="0;url=/login/"> 
{% else %} 

나는 이런 식으로 뭔가 쓰고 싶습니다 : 지금까지 내가 가진

{% if user.username == "" and request.path != projectRoot+"/login/" and request.path != projectRoot %} 
    <meta http-equiv="REFRESH" content="0;url=projectRoot+/login/"> 
{% else %} 

내가 작성해야하고 나의보기에서이 projectRoot 변수를 보내거나 이미에 대한 변수가 ? 사전에

많은 감사,

로맹

+2

당신이 로그인이 방법을 리디렉션하려고하는 특별한 이유가 있습니까? ([login_required]] (https://docs.djangoproject.com/en/dev/topics/auth/default/#the-login-required-decorator) 데코레이터 사용과 같이 훨씬 더 좋은 방법이 있습니다 –

답변

1

request.full_path을 사용하여 UR1의 전체 경로를 가져올 수 있으며 템플릿 태그를 작성하여 문자열이 포함되어 있는지 확인할 수는 있지만 원하는 작업을 수행하는 것은 좋지 않습니다 (무단으로 리디렉션).

대신, should decorate your view using @login_required :

from django.contrib.auth.decorators import login_required 

@login_required 
def my_view(request): 
    ... 
+0

흥미 롭 군! 방금 시도했지만 작동하지 않습니다. 로그되지 않은 경우 내 애플리케이션에 적합하지 않은 http://127.0.0.1/accounts/login/?next=/import/ (LOGIN_URL 변수로 인해)로 리디렉션됩니다. LOGIN_URL을 (를) 한 번 수정하는 방법은 무엇입니까? 설정 파일에서? – rom

0

난 당신이 템플릿에 재 이런 종류의 일을하려고되어서는 안된다는의를 얻는 쉬운 방법이 있습니다 티미에 동의하지만 보기에 대한 전체 URL : {% url %} 태그를 사용하고 있습니다. 이 태그 (보기에서 reverse 기능)는 WSGI 환경에서 가져 오는 전체 경로를 인식하므로 추가 변수를 전달할 필요가 없습니다. 어쨌든 URL 경로를 하드 코딩해서는 안되기 때문에이 방법을 사용하면 모든 것이 효과적입니다.

관련 문제