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这个东西应该不会出现没有安装的问题了。
插件文档链接:https://django-snakeoil.readthedocs.io/en/latest/
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中的数据

Django-Oscar小记:如何使用高版本Django开发网页的SEO模块的更多相关文章
- Django rest framework(4)----版本
目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django res ...
- 如何将SqlServer配置为django的数据源(2.2以后版本)
django-pyodbc-azure 是一个官方推荐的 第三方django数据库支持backend. 根据官网的介绍django-pyodbc-azure 只能支持到 django 2.1.如果涉及 ...
- Windows下python 3.0版本django的安装、配置、与启动
使用的环境是Windows操作系统,python的环境是3.6,django是官网上最新的版本1.10.6,本文介绍从安装python之后怎样用过pip管理工具安装django,以及django的项目 ...
- [python][django学习篇][5]选择数据库版本(默认SQLite3) 与操作数据库
推荐学习博客:http://zmrenwu.com/post/6/ 选择数据库版本(SQLite3) 如果想选择MySQL等版本数据库,请先安装MySQL并且安装python mysql驱动,这里不做 ...
- reverse(两种反向生成url django原生形式和rest_framework中版本的形式)
reverse(两种反向生成url django原生形式和rest_framework中版本的形式) views.py from django.shortcuts import render,Http ...
- Django学习笔记(1)——初识Django
一:Web框架介绍 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以快速帮你开发特定的系统. Web框架是别人已经设定好的一个web网站模板,你学习它 ...
- 学习django就看这本书了!django book 2.0中文版
所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/29/ 来源:python黑洞网 dj ...
- wsgiref模块,动静态网页,jinja2模块,django
基于wsgiref模块搭建服务端 from wsgiref import simple_server def run(request, response): """ :p ...
- 【Django】Apache上运行多个Django项目
运行单个项目的步骤参考:这里 1 安装环境 操作系统:Ubuntu 12.04 LTS 32 位(安装在VMware虚拟机中) python 版本: Python 2.7.3 Django版本 > ...
随机推荐
- Tomcat 的 ManagerApp 简单使用
当启动Tomcat的时候,直接访问http://localhost:8080会直接进入下面页面,原因是Tomcat的默认项目是部署在webapps目录下的ROOT目录下的,这个manager项目就在R ...
- JS创建对象,数组,函数的三种方式
害怕自己忘记,简单总结一下 创建对象的3种方法 ①:创建一个空对象 var obj = {}; ②:对象字面量 var obj = { name: "Tom", age: 27 ...
- [Swift-2019力扣杯春季初赛]2. 校园自行车分配
在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m.所有工人和自行车的位置都用网格上的 2D 坐标表示. 我们需要为每位工人分配一辆自行车.在所 ...
- sql的转义字符单引号
在SQL中,我们都知道单引号 ' 表示字符串的开始和结束符号,如: select * from students where name = '小明'; 但如果字符串里面有单引号时,应该怎么查询呢? 这 ...
- DCT(离散余弦变换)算法原理和源码(python)
原理: 离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Tra ...
- js自定义水印
前言:今天在github上看到了一个定义水印的项目,因为获取的星星还蛮多,就多看了几眼,发现该项目简单有趣,心想以后可能会用的到,并且我下载到本地并亲自测试运行了一波.其实该项目最吸引我的是它定义js ...
- Postgresql-模糊匹配大杀器
# Postgresql-模糊匹配大杀器 ## 问题背景 随着pg越来越强大,abase目前已经升级到5.0(postgresql10.4),目前abase5.0继承了全文检索插件(zhparser) ...
- [ncw7] 小睿睿的方案
考虑一对情侣(x,y)x<y的贡献,设in[x],out[x]为数的dfs序. 强制从x走向y方向 当in[x]<in[y]且out[y]<=out[x] 矩形{1,in[x],in ...
- 2.java面向对象类与类/类与对象之间关系详解
继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功 ...
- sql server 备份与恢复系列一 必备知识
一.备份概述 数据安全是数据库的生命,数据库在使用过程中难免会遇到如:使用者的误操作或是被恶意修改,硬件故障导致数据文件无法被访问,自然灾害导致机房在物理上的损毁.本章从备份与恢复的功能作为解决问题的 ...