Django-Oscar小记:如何使用高版本Django开发网页的SEO模块
在使用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中的数据
上一篇: 基于注解的 IOC 配置
下一篇: 课时55.详情和概要标签(理解)