2017-11-06 8 views
0

申し訳ありませんが、この質問は非常にnoobishですが、私はPython/Djangoを1ヶ月学習しているだけです。私はグーグルで、何時間もスタックオーバーフローを検索しましたが、私の問題の解決策を見つけることができません。templatetagのモデルから特定のテキストフィールドを呼び出すにはどうすればいいですか?

私は基本的にTextFieldからURLを解析し、それをテンプレートに提示しようとしています。

は、これまでのところ私が持っている:

from django import template 
from urllib.parse import urlparse 
register = template.Library() 
from ..models import Thing 

@register.simple_tag 
def youtube_parse(): 
    ytparse = urlparse('https://www.youtube.com/watch?v=bnKaOo67mLQ') # URL test 
    return yt_parse 

そして、私のHTMLテンプレートに:私は次のコードでtemplatetags/embeds.pyを作成

class Thing(models.Model): 
    youtube_link = models.TextField(blank=True, null=True) 

models.py

{% load embeds %} 
{% youtube_parse %} 

Soとても良い。テンプレートは解析されたURLを表示します(それほどきれいではありませんが)。

しかし、私が問題を抱えているのは、embed.pyのモデルの "youtube_link"フィールドを呼び出すことです。基本的に私はembed.pyはこれをしたい:

ytparse = urlparse(モデルシングからyoutube_link取得し、それを解析)

しかし、私は問題youtube_link呼び出しを持っています。私はThing.youtube_linkと他の多くのコードスニペットを試していますが、しばらくGoogle検索した後に見つけましたが、何も動作していないようです。

私には何が欠けていますか?

答えて

0

解決策の1つは、文字列を引数としてyoutube_parseメソッド/フィルタに渡すことです。あなたの正確なシナリオはわかりませんが、他の回答と比較すると、1つのデータベースクエリを保存する可能性があります。

templatetags/embeds.py

@register.filter 
@stringfilter 
def youtube_parse(text): 
    ytparse = urlparse(text) 
    return yt_parse 

テンプレート:

{% load embeds %} 
{% thing.youtube_link|youtube_parse %} 
+0

はどうもありがとう、それは今働いている私は、このソリューションを好むだろう! {%thing.youtube_link | youtube_parse%}を{{thing.youtube_link | youtube_parse}}に置き換えて動作させました – Harri

関連する問題