详解Django的 get_meta_description() 函数:获取页面的元描述信息

  • Post category:Python

get_meta_description()函数是Django中用于获取网页meta标签中description属性对应的内容的函数。 它的作用是获取当前页面的meta标签中的description的内容,如果没有则返回空字符串。

使用方法如下:

1.引入模块

from django.template.defaultfilters import register

2.注册该方法

@register.filter
def get_meta_description(html):
    # 获取description标签
    soup = BeautifulSoup(html, 'html.parser')
    description = soup.find('meta', attrs={'name':'description'})
    # 如果存在description标签,返回description标签的内容
    if description:
        return description.get('content', '')
    # 否则返回空字符串
    return ''

3.调用方法

在html模板中:

{% load custom_filters %}

<meta name="description" content="{{ html|get_meta_description }}">

例1:如果在HTML代码中有以下META标签,可以使用get_meta_description()函数获取description的内容。

<meta name="description" content="Django Tutorial for beginners">

在视图函数中:

from django.template.defaultfilters import register
from django.http import HttpResponse

def index(request):
    html = '''<html>
                <head>
                    <meta name="description" content="Django Tutorial for beginners">
                    <title>Django Tutorial</title>
                </head>
                <body>
                    <h1>Welcome to Django Tutorial</h1>
                </body>
            </html>'''
    meta_description = get_meta_description(html)
    return HttpResponse(meta_description)

在浏览器中访问 http://127.0.0.1:8000/ ,将会输出 “Django Tutorial for beginners”。

例2:如果在HTML代码中没有description标签,则get_meta_description()函数将返回空字符串。

<!DOCTYPE html>
<html>
<head>
    <title>Django Tutorial</title>
</head>
<body>
    <h1>Welcome to Django Tutorial</h1>
</body>
</html>

在视图函数中:

from django.template.defaultfilters import register
from django.http import HttpResponse

def index(request):
    html = '''<!DOCTYPE html>
                <html>
                    <head>
                        <title>Django Tutorial</title>
                    </head>
                    <body>
                        <h1>Welcome to Django Tutorial</h1>
                    </body>
                </html>'''
    meta_description = get_meta_description(html)
    return HttpResponse(meta_description)

在浏览器中访问 http://127.0.0.1:8000/ ,将会输出 “”(空字符串)。

以上两个例子分别展示了get_meta_description()函数获取具有meta标签的页面的description标签的内容以及没有description标签的页面时,返回空字符串的情况。这些例子可以帮助开发人员更好地理解它的用法和返回值。