很抱歉,如果这个问题很无聊,但我只学了一个月的Python / Django。我已经在Google Stack Overflow上搜索并搜索了几个小时,但无法找到解决问题的方法。
我基本上是尝试从TextField解析URL,然后将其呈现在模板中。
到目前为止,我有:
models.py
class Thing(models.Model):
youtube_link = models.TextField(blank=True, null=True)
我使用以下代码创建了templatetags / embeds.py:
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模板中:
{% load embeds %}
{% youtube_parse %}
到目前为止一切顺利。模板显示已解析的URL(虽然它还不是很漂亮)。
但是我遇到的麻烦就是打电话给#34; youtube_link"来自embed.py中的模型Thing。基本上我想要embed.py来做到这一点:
ytparse = urlparse(从模型Thing获取youtube_link并解析它)
但是我在调用youtube_link方面遇到了问题。我已经尝试过Thing.youtube_link和我在谷歌搜索一段时间后发现的许多其他代码片段,但似乎没有任何效果。
我错过了什么?
答案 0 :(得分:0)
一种解决方案是将字符串作为参数传递给youtube_parse
方法/过滤器。我不知道您的具体情况,但如果将其与其他答案进行比较,则可能会保存一个数据库查询。我更喜欢这个解决方案:
templatetags/embeds.py
:
@register.filter
@stringfilter
def youtube_parse(text):
ytparse = urlparse(text)
return yt_parse
模板:
{% load embeds %}
{% thing.youtube_link|youtube_parse %}