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中的資料