2014-04-30 3 views
2

템플릿에 렌더링 된 3 개의 변수가 있는데,이 변수는 공백이 있으면 서로 옆에 표시해야합니다. 나는 시도 : v1가 doesnot 존재하는 경우Django - 공백이없는 템플릿의 변수

"{{v1|default:''}} {{v2|default:''}} {{v3|default:''}}" 

하지만, 내가 " v2_value v3_value" 있습니다.

나는 항상 : "any_value any_value" 의미 - 시작과 끝 부분에 공백없이. 이것을 어떻게 할 수 있습니까?

모든 가능한 순열을 수행 할 수 있지만,이 일을 더 우아한 방법이 있습니까?!

답변

1

당신은 두 가지 옵션이 있습니다. 첫째, 대신 별도의 세 가지 변수와 사용의 목록 템플릿을 전달할 수 :

{{yourlist|join:" "}} 

을하지만 뷰에서 목록을 생성해야 할 것 때문에 나는 그 방법을 좋아하지 않아, 그 지저분한입니다.

두 번째로 더 좋은 옵션은 맞춤 템플릿 태그을 만드는 것입니다. 예를 들어, 앱에 templatetags 모듈을 만들고 main_extras.py이라는 파일을 만듭니다. 다음 코드를 추가합니다 :

from django import template 

register = template.Library() 

@register.simple_tag 
def join_vars(*args, **kwargs): 
    separator = kwargs['separator'] 
    return separator.join(str(x) for x in args) 

그런 다음 템플릿에서이 같이 사용할 수 있습니다

{% load main_extras %}  

<pre>"{% join_vars v1 v2 v3 separator="/" %}"</pre> 
+0

아름다운! 고마워. – doniyor

3

무엇 약 ' '.join([v1, v2, v3]) 외부 서식 파일,보기에서? 당신은 또한 join 태그를 사용할 수

: 별도의 값의 목록을 작성 list_of_values|join:' '

도 posiible이지만, cutsom 태그가 필요합니다. 확인하시기 바랍니다 :