如何解决Twitter/Reddit 帖子未正确嵌入 Django 模板
我正在构建一个新闻聚合器。我通过 tweepy 和 PRAW 库连接到 twitter 和 reddit API。我正在从 twitter 和 reddit 中提取 json 数据,并以时间线格式并排显示帖子。
我有一个名为 main.html 的模板,它接收上下文(reddit 帖子 ID;twitter 状态 URL)并将该上下文传递给模板标签,以便生成要嵌入的 html。这是完成所有这些工作的模板。模板标签是“tweet_tags.py”和“red_attempt.py”,正如您在页面顶部看到的那样。
{% block content %}{% load red_attempt %} {% load tweet_tags %} {% autoescape off %}
<h1>Welcome</h1>
<a href="/main" class="btn btn-danger">Refresh News</a>
<div class="container">
<div class="row">
<div class="col-6">
<h3 class='text-center'>Reddit News</h3>
{% for item in reddit %}
<div class="mdl-card__media" id="timeline"></div>
{% red_attempt item %}
<br>
{% endfor %}
</div>
<div class="col-6">
<h3 class='text-center'>Twitter News</h3>
{% for item in twitter %}
<div class="mdl-card__media" id="timeline"></div>
{% tweet_tags item %}
<br>
{% endfor %}
</div>
</div>
</div>
{% endautoescape %}{% endblock %}
模板标签是“tweet_tags.py”和“red_attempt.py”,正如您在页面顶部看到的那样。
这里分别是他们的代码:
tweet_tags.py
def tweet_tags(url):
""" Requests a tweet from oembed and returns the html element """
tweet_request = requests.get(
'https://publish.twitter.com/oembed?url=' + url + '&omit_script=true')
tweet_json = tweet_request.json()
tweet_html = tweet_json['html']
return tweet_html # returns to our template
red_attempt.py
def red_attempt(url):
""" Requests a tweet from oembed and returns the html element """
headers = {
'User-Agent': 'nba_comp app','From': 'nickiscool88','Accept': 'application/json'
}
endpoint = requests.get(
f"https://www.reddit.com/oembed?url=https://www.reddit.com{url}",headers=headers)
return endpoint.json()['html']
这一切都按预期工作。
我想做的是,让一个服务脚本拉取 twitter 和 reddit 数据,使用 models.py 将该数据存储在我的数据库中,然后从本地数据库拉取数据以显示.我试图在这个脚本中做到这一点,test.html
{% block content %} {% autoescape off %}
{% for post in all %}
<div class="mdl-card__media" id="timeline"></div>
<p>{{ post.html }}</p>
</div>
{% endfor %} {% endautoescape %}{% endblock %}
在这种情况下,“all”是上下文,它是来自 models.py 的数据库对象。这是我的 models.py 脚本。
class Post(models.Model):
post_type = models.CharField(
max_length=20,null=True,blank=True)
root_url = models.CharField(max_length=200,default="",unique=True)
html = models.TextField(default="")
created_at = models.DateTimeField(auto_now_add=True)
如您所见,我正在尝试遍历数据库中的所有帖子,并发布每个帖子的 html。我期待与 main.html 相同的结果,但它看起来像这样
相对于如下所示的 main.html
所有支持嵌入的脚本/小部件标签都在 HTML 模板的底部。
如何在 test.html 中显示来自我的数据库的这些 twitter/reddit 帖子,类似于我如何像 main.html 那样显示它们,我只是在其中获取 json 数据?
解决方法
问题已解决。用于嵌入 twitter/reddit 帖子的脚本标签需要在标签内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。