2015-01-26 2 views
0

모든 코드 조각에는 필터가 URL에 적용되는 기본 패턴이 있습니다. 예 :두 개의 변수로 구성된 URL의 django 필터

<img src="{{obj.url|filter}}" /> 

두 부분으로 구성된 URL로 어떻게 필터를 사용할 수 있습니까?

<img src="{{something}}{{obj.url}}" /> 

참고 : 필터는 그것의 단지 두 번째 부분, 전체 URL을 처리해야

편집 :

모델 :

class Foo(models.Model): 
    token = models.CharField(max_length=150) 
    reference = models.ForeignKey(Reference) 

보기 :

def index(request): 
    foos = Foo.objects.filter(reference=value).all() 
    return render(request, 'index.html', {'foos' : foos}) 
,

템플릿 : 사실

{% for foo in foos %} 
    <img id="foo_{{foo.pk}}" src="{{MEDIA_URL}}{{foo.token}}" /> 
{% endfor %} 

, 나는 두 부분으로 이미지 URL에 easythumbnail URL 필터를 적용 할.

+0

컨텍스트 변수를 다루는 경우 컨텍스트에서 특별히 원하는 것을 전달하지 않는 이유는 무엇입니까? –

+0

정말 좋은 옵션입니다. 고맙습니다. 내 경우에는 모델에서 반환 된 개체 컬렉션이 있고 해당 컬렉션을 반복합니다. 즉 컬렉션에서 개체를 개별적으로 변경해야합니다. –

+1

질문에 대한 업데이트를 제공 할 수 있습니까? 모델에 대한 메서드와 같은 사운드는 객체로 작업하는 경우 원하는 것일 수 있습니다. –

답변

1

이 같은 컨텍스트 변수를 사용하려면 템플릿의 내용을 조작하는 대신 컨텍스트에서 필요한 것을 만들어야합니다.

컨텍스트 프로세서를 통해 항상 사용할 수있는 변수를 만들 수 있기 때문에 많은 장소에서 필요한 변수가있는 경우보기에서 변수를 추가하거나 컨텍스트 프로세서를 만들 수 있습니다.

이 답변을 확인해 보려면 여기를 클릭하십시오. 귀하의 코멘트 다음 https://stackoverflow.com/a/27797061/1199464

갱신 문자열 또는 유사한 형식을 모델에 방법을 쓰고 아무 문제가 없습니다

;

class Foo(models.Model): 
    token = models.CharField(max_length=150) 
    reference = models.ForeignKey(Reference) 

    def get_url(self): 
     url = u'{media_url}{path}'.format(
      media_url=settings.MEDIA_URL, 
      path=self.token 
     ) 
     return url 

템플릿 :

{% for foo in foos %} 
    <img id="foo_{{ foo.pk }}" src="{{ foo.get_url }}" /> 
{% endfor %} 

그리고 아직 장고 너무 익숙하지 않은 경우 (!) 참고에

, 당신은 당신 콘텐츠에 대한 사용자 업로드 콘텐츠에 대한 MEDIA_URLSTATIC_URL를 사용해야합니다. 당신은 이것에 더 많은 것을 여기에서 읽을 수있다; How can I get the MEDIA_URL from within a Django template?

Django docs; https://docs.djangoproject.com/en/1.7/ref/settings/#media-url

+0

감사합니다. 그게 장고/파이썬의 매력입니다. 유연성과 파워입니다! 큰! –

관련 문제