当前位置: 移动技术网 > IT编程>网页制作>CSS > Django-Oscar小记:如何使用高版本Django开发网页的SEO模块

Django-Oscar小记:如何使用高版本Django开发网页的SEO模块

2019年01月15日  | 移动技术网IT编程  | 我要评论

预防色斑,小说吞噬星空,2014130

在使用google搜索django的seo插件时,很多插件都没有更新到python3.x,有的插件更新到了python的高版本,但是不适用于django的2.x。

django在升级到版本2.x的时候删除了很多类。

所以,在选择插件时,建议使用 django-snakeoil

1.安装:

最快捷的方法:pip install django-snakeoil

其他方法自行google,对于一个网站都开始设置seo的时候,pip这个东西应该不会出现没有安装的问题了。

插件文档链接:

2.配置

在setting.py文件中配置(注:此插件一定要放在最后)

installed_apps = [
    '....',
    'snakeoil',
]

 

运行makemigrations和migrate

正常运行上述两个命令并不会成功生成table表。正确指令:

python manage.py makemigrations seo

python manage.py migrate seo

不是snakeoil,是seo

完毕后,数据库生成seo_seourl表。可以在django后台,根据url配置页面简单title,description

3.html

页面文件开头,添加代码:

{% load snakeoil %}
{% get_seo_data %}
<title>{{ seo.head_title }}</title>
<meta name="description" content="{{ seo.meta_description }}">

4.扩展

接下来,我们丰富此插件,添加keywords。

首先,新建一个自己的model,可以继承它原有的基类:

snakeoil.models.seomodel

也可以重写一个自己的model。简单代码如下:

class myseo(models.model):
   head_title = models.charfield(blank=true, max_length=80, verbose_name='head title')
   meta_description = models.textfield(blank=true, verbose_name='meta description')
   keywords = models.textfield(blank=true, verbose_name='key words')

   
   class meta:
      abstract = true

设定abstract=true,因为此table不需要被加载。我们最终使用到的表就是seo_seourl。

有了自己的seo基类之后,在settings.py中配置seo_seourl的父类。

snakeoil_model = 'myapp.models.myseo'

 

重新运行makemigrations和migrate,seo_seourl会被重新生成。之后,我们在前端添加keywords的读取:

<meta name="keywords" content="{{ seo.keywords }}"/>

5.自定义tags

接下来进行进一步扩展。在templatetags文件夹下,添加my_tags.py文件,复制snakeiol包下面的templatetags/snakeoil.py全部代码。

然后再settings.py文件中配置引用my_tags.py

templates = [
    {
        'backend': 'django.template.backends.django.djangotemplates',
        'dirs': [...],
        'app_dirs': true,
        'options': {
            'context_processors': [...],
            'libraries': {
                'hexseo_tags': 'templatetags.hexseo_tags',
            }
        },
    },
]

 

之后我们就可以在前端调用。

{% load hexseo_tags %}
{% get_seo_data %}
<title>{{ seo.head_title }}</title>
<meta name="description" content="{{seo.meta_description}}"/>
<meta name="keywords" content="{{ seo.keywords }}"/>

刷新页面,查看是否成功,然后再render代码中写自己需要的逻辑代码去获取seo_seourl中的数据

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网