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版本 > ...
随机推荐
- Git使用详细教程(6):git mv重命名文件
与使用git rm类似,Git还提供了重命名文件的命令git mv,我们可以通过该命令重命名文件. 如下图,git mv包含了以下动作
- linux下postgres的安装
软件包的下载 在浏览器中访问https://www.enterprisedb.com/download-postgresql-binaries 然后选择适合自己的版本,我选择的是linux64位下的1 ...
- 第79节:Java中一些要点
第79节:Java中一些要点 前言 一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢 内容 如果有人问jre,jdk,jvm是什么,你怎么回答呢? jre的英 ...
- shell 中let无法使用的原因
运行 sh let.sh 时,却显示 let: not found 百度之后知道: /bin/sh指向了dash而不是bash,dash不支持let命令. 解决方法: 法1.使用 bash ...
- Python - IPython
1- IPython简介 HomePage:http://ipython.org/ IPython(interactive Python) provides a rich architecture f ...
- Web存储及文件拖拽
存储 实现内容的永久保存(localStorage) 保存: localStorage.自定义键名="123"; 获取: //判断是否有内容 if(localStorage.自定义 ...
- Canny提取图像轮廓
#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgu ...
- springBoot(8)---整合redis
Springboot整合redis 步骤讲解 1.第一步jar导入: <dependency> <groupId>org.springframework.boot</gr ...
- Android利用Intent与其他应用交互
前言: 上一篇博客给大家聊了Intent的定义,分类.属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法. Android系统的一个重要特性 ...
- IT十年经典书籍
摘自网络,近来在浏览时,发现一个叫做“IT十年经典书籍”的主题.google了一下,实在找不出这个主题的源头出处.不过这个主题中所涉及的每一本书讲出来都是振聋发聩的,大可以作为它那个行业的经典了. ...