日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythondjango项目集成_[Python]将Wagtail整合到Django2项目中

發布時間:2025/3/21 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythondjango项目集成_[Python]将Wagtail整合到Django2项目中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Django是Python主流的Web框架之一,目前主要版本是Django 2.1,但是很多擴展都是基于Django 1.x。最近想做個簡單的Web發布,選擇了Wagtail,因為其他兩個主流的cms系統django-cms、mezzanine都不支持Django 2.x。由于項目需要,要將Wagtail整合進原來的Django項目中。(說個題外話,如果有時間敲代碼,還是建議自己敲代碼開發項目,用各種免費擴展然后去修改,處處是坑)

思路是先用Wagtail創建項目文件夾,再拷貝到django2里手工創建項目整合。

作為獨立站安裝

依次執行以下代碼:

$ pip install wagtail

$ wagtail start mysite

$ cd mysite

$ pip install -r requirements.txt

$ python manage.py migrate

$ python manage.py createsuperuser

...(等下輸入用戶名密碼等信息)

$ python manage.py runserver

創建項目:

$ python manage.py startapp cmssite

執行完這一步之后,mysite文件夾下就有個cmssite文件夾,現在可以停止掉Wagtail服務了。

手工創建項目進行整合

將cmssite文件夾拷貝到Django根目錄(我的是D:\dsites\)下,作為你的項目。將Wagtail的mysite\mysite\templates下面的base.html拷貝到Django的templates文件夾里。(這是坑點之一)

到setting.py里 INSTALLED_APPS添加:

'wagtail.contrib.forms',

'wagtail.contrib.redirects',

'wagtail.embeds',

'wagtail.sites',

'wagtail.users',

'wagtail.snippets',

'wagtail.documents',

'wagtail.images',

'wagtail.search',

'wagtail.admin',

'wagtail.core',

'modelcluster',

'taggit',

'cmssite',

MIDDLEWARE添加:

'wagtail.core.middleware.SiteMiddleware',

'wagtail.contrib.redirects.middleware.RedirectMiddleware',

如果你之前沒有設置STATIC_ROOT,則要添加:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

添加WAGTAIL_SITE_NAME:

WAGTAIL_SITE_NAME = '站點名稱'

在根目錄創建media文件夾(就是cmssite并列的文件夾),并添加:

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

配置urls.py(可以根據自己需要設置):

from django.urls import path, re_path, include

from wagtail.admin import urls as wagtailadmin_urls

from wagtail.documents import urls as wagtaildocs_urls

from wagtail.core import urls as wagtail_urls

urlpatterns = [

...(你原來配置)

re_path(r'^cms/', include(wagtailadmin_urls)),

re_path(r'^documents/', include(wagtaildocs_urls)),

re_path(r'^news/', include(wagtail_urls)),

]

這樣,cmssite的首頁就是/news/,管理頁面是/cms/

在model.py頁面建立一個模型,比如HomePage:

from django.db import models

from wagtail.core.models import Page

from wagtail.core.fields import RichTextField

from wagtail.admin.edit_handlers import FieldPanel

class HomePage(Page):

body = RichTextField(blank=True)

content_panels = Page.content_panels + [

FieldPanel('body', classname="full"),

]

對應的,在你的templates文件夾下創建一個cmssite文件夾,然后創建一個home_page.html

{% extends "base.html" %}

{% load wagtailcore_tags %}

{% block body_class %}template-homepage{% endblock %}

{% block content %}

{{ page.body|richtext }}

{% endblock %}

然后,命令行執行:

$ python manage.py makemigrations

$ python manage.py migrate

$ python manage.py runserver 8080

然后/cms/進入管理界面,進入settings > sites

配置默認站點,Root page一定要選擇剛才的 home_page (這是坑點之二,你肯定一直想在urls.py里配置入口)

接下來你就可以在cmssite里繼續倒騰了。

總結

Wagtail是基于Django的,但是對Django做了很多封裝簡化,比如取消了內部urls配置,取消了views(直接讓model綁定了template),貌似簡單了,但是留下了很多坑點,如果以Django的思維去處理Wagtail就會遇到很多麻煩。當然了,Wagtail里面還是可以用Django方式來開發的。

總結

以上是生活随笔為你收集整理的pythondjango项目集成_[Python]将Wagtail整合到Django2项目中的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。