2017-01-26 13 views
2

3つのフィールド(名前、URL、日付)を持つモデルがあります。私の見解でURLを取得し、メソッドの中に入れるにはどうすればよいですか?djangoモデルの値をビューでさらに使用するため

sites = Site.objects.all().order_by('date')[:3] 

url(http://www.example.comからexample.com)からホストを取得する必要があります。私は、このタスクのためのクラスがあります。私は私のテンプレートで、後でそれを使用したいと思い

class SiteThumb(): 

    def get_site_thumb(self, url): 
     host = urlparse(url).hostname 
     if host.startswith('www.'): 
      host = host[4:] 
     return(host) 

を({{site.url}}に似ていますが、変数「ホスト」を利用して何か特定に関連する「サイト」オブジェクト)。私はそれに対処することはできません。

def site(request, category_slug, subcategory_slug, id): 

私は単に特定のオブジェクトに割り当てることができるIDがあります。私のベースビューで

def index(request): 

私はいくつかのオブジェクトを読み込む必要があります。すべての手がかりをありがとう。

答えて

1

1つのアプローチはモデル手法です。

たとえば、 Siteは、上記の3つのフィールドのURL、名前、および日付を持つモデルです。テンプレートでアクセスできるSiteモデルのモデルメソッドを定義できます。このようにすることができます。このメソッドは{{ site.hostname }}としてアクセスすることができ、すべてのSiteインスタンス上のテンプレートで

class Site(models.Model): 

    url = field 
    name = field 
    date = field 


    def hostname(self): 
     #It is copy paste of your implementation 
     host = urlparse(url).hostname 
     if host.startswith('www.'): 
      host = host[4:] 
     return host 

+0

これは私が探していたものです。今私はこの方法を変更し、ウェブサイトのサムネイルを生成するためのURLを得ることができます。ありがとうございました。 – jundymek

関連する問題