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中的數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM