python - Twitter/Reddit 帖子未正确嵌入 Django 模板
问题描述
我正在建立一个新闻聚合器。我通过 tweepy 和 PRAW 库连接到 twitter 和 reddit API。我正在从 twitter 和 reddit 中提取 json 数据,并以时间线格式并排显示帖子。
我有一个名为 main.html 的模板,它接受上下文(reddit post ids; twitter status urls)并将该上下文传递给模板标签,以便生成要嵌入的 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”,您可以在页面顶部看到加载。
这是他们的代码,分别是:
推文标签.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 帖子的脚本标签需要在标签内。
推荐阅读
- android - 蓝牙 le gatt 客户端和服务器
- r - 获取 as.Date 仅显示年份而不是自动包括今天的日期
- reactjs - Redux 状态管理
- sonarqube - Sonarqube DB 复制工具 - 从哪里获得 jar?
- javascript - 展开全部/折叠所有按钮js
- android - How can I create a table in SQLite?
- asp.net-mvc - 更改实体框架的服务器(Dev、UAT、Prod)
- javascript - 从 JSON 对象中动态删除属性
- ruby-on-rails - Rspec中回形针的模拟URI.parse
- rest - 放心 - JsonPath 提取值