【问题标题】:How do I emit the HTML of an external website in a Django template?如何在 Django 模板中发出外部网站的 HTML?
【发布时间】: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 这是否意味着我需要构建一个插件?
  • 检查这个答案stackoverflow.com/a/8201281/8150371,它使用的是urllib而不是请求

标签: python django urllib django-cms


【解决方案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 %}
...

【讨论】:

    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    相关资源
    最近更新 更多