2015-01-26 53 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 %} 

由於事實上,我只想申請easythumbnail URL過濾圖像URL,它有兩個部分。

+0

如果你處理的環境變量,爲什麼不通過你特別是通過上下文想要什麼? – 2015-01-26 22:05:52

+0

確實是一個很好的選擇。謝謝。 但在我的情況下,我有一個從模型返回的對象的集合,我遍歷該集合,這意味着我需要更改該集合中的每個單獨的對象。 – 2015-01-26 22:08:36

+1

你能提供一個更新你的問題的例子嗎?聽起來像模型上的方法可能是你想要的東西,如果你用這個對象來做這件事。 – 2015-01-26 22:13:06

回答

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 %} 

而上,如果你不太熟悉的Django還沒有阿里納斯,你應該使用MEDIA_URL用戶上傳的內容和STATIC_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

謝謝!這正是Django/Python中令我着迷的一點 - 靈活而強大!大! – 2015-01-27 08:24:59