2010-07-01 2 views
1

템플릿 태그 profile을 제공하는 장고 응용 프로그램이 있습니다. 태그는 인수로 사용자 이름을 허용합니다. 주어진 사용자 이름으로 User 인스턴스가 존재하지 않는 상황을 어떻게 대처해야합니까? 템플릿 태그 안에 HTTP 404를 올리는 것이 합리적입니까? 아니면 단순히 빈 사전을 템플릿에 전달해야합니까?Django 템플릿 태그에서 Http404를 올릴 수 있습니까?

답변

2

나는 템플릿에서 404를 올릴 수 있다고 생각지 않으며, 할 수 있으면 그렇게해서는 안됩니다. 논리와 표현을 분리하여 보관해야합니다.

두 가지 가능성이 있습니다.

  • 이 템플릿 태그로 아무것도 렌더링하지 마십시오
  • 템플릿 오류를 올립니다 (자동으로 실패).

템플릿 태그가 무엇을하고 있는지 정확하게 말하지 않으므로 둘 중 하나를 추천 할 수는 없지만 템플릿 태그와 관련하여 가장 일반적인 것은 조용히 실패하는 것입니다.

0

나는 두 가지 방법으로 볼 수 있습니다

{% if profile_not_exist %} 
   Javascript with redirect 
{% else %} 
   Generic code 
{% endif %} 

처럼, 리디렉션하는 자바 스크립트 코드로 if 문

사용 또는

def index(request): 
    if(profile_not_exist): 
     indexTemplate = loader.get_template('404.html') 
    else: 
     indexTemplate = loader.get_template('index.html') 
1

처럼보기 (더 좋은 방법)에 로직을 정의 무엇 profile 태그를 표시하기 전에 user 변수가 존재하면 템플릿 내에서 확인해야합니다.

2

페이지가 사용자 특정 페이지 인 경우 해당 페이지를 렌더링하기 전에 사용자가 @login_required이되어야 사용자가 있음을 알 수 있습니다.

그렇지 않으면 규칙에 따라 템플릿 태그에서 자동으로 실패해야합니다.

관련 문제