如何在 Django 模板中发出外部网站的 HTML?

Posted

技术标签:

【中文标题】如何在 Django 模板中发出外部网站的 HTML?【英文标题】:How do I emit the HTML of an external website in a Django template? 【发布时间】:2018-06-15 15:13:32 【问题描述】:

我想在外部站点上获取我的一个页面的内容、html 和所有内容。如果在 .NET 中,我可以使用 WebClient 并检索页面,将其保存到变量中,然后在 Razor 中发出。 php 可以使用 cURL。

如何在 Django 模板中做到这一点?我需要创建一个使用 urllib 的插件吗?

如果重要的话,我正在使用 DjangoCMS。我搜索并尝试了 Django http 模块。

我查看了 http 的帮助程序 Django 模块,但什么也没看到。我不确定将urllibrequests 放在哪里,因为我不知道我要做的事情是否需要我构建插件或自定义模板标签。

我希望知道如何使用 Python 和 Django 的模板语言或仅使用模板语言来做到这一点,所以我真的不想在 javascript、iframe、对象等中做到这一点。

【问题讨论】:

对于初学者,您可以使用 requests 模块在您的 views.py 中编写一个函数,只需几行代码。 @Stack 这是否意味着我需要构建一个插件? 检查这个答案***.com/a/8201281/8150371,它使用的是urllib而不是请求 【参考方案1】:

您可以使用 reqeusts 库,并将函数定义为视图的一部分。

如果您希望全局可访问,您也可以定义一个简单的标签。

例如

import requests
from django import template

register = template.Library()

@register.simple_tag
def get_site_source(url):
    res = requests.get(url)
    return res.text

在模板中:

...
% get_site_source url %
...

【讨论】:

以上是关于如何在 Django 模板中发出外部网站的 HTML?的主要内容,如果未能解决你的问题,请参考以下文章

08-Django模板

关于Django模板的JSON

如何从 Django 迁移中发送信号?

如何使用 groovy 模板在 Jenkins 中发送电子邮件?

如何遍历 Django 模板中的字典?

如何使用 smtp.EmailBackend 在 Django 中发送电子邮件而无需通过邮件服务器进行身份验证