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项目中相关推荐

  1. pycharm如何更改python项目环境_如何用Pycharm打开已有项目配置python环境

    如何用Pycharm打开已有项目配置python环境 发布时间:2020-07-06 11:06:30 来源:亿速云 阅读:175 作者:清晨 这篇文章将为大家详细讲解有关如何用Pycharm打开已有 ...

  2. java项目管理系统_基于SSM框架的JAVA科研项目管理系统

    每天记录学习,每天会有好心情.*^_^* 今天记录的项目是科研项目管理系统论文,这个项目是这么回事:随着计算机应用水平的提高和科研管理的规范化和制度化,建立一套适用于科研院所科研管理工作的科研项目管理 ...

  3. sphinx 项目根目录_如何使用Sphinx工具记录Django项目

    sphinx 项目根目录 I recently visited a company where I had a nice talk with one of its employees. We talk ...

  4. 敏捷开发团队 项目分工_如何为您的软件开发项目建立敏捷团队

    敏捷开发团队 项目分工 敏捷公司认为团队合作对于交付工作软件至关重要,而优秀的敏捷团队则关注"我们"而不是" I". 不幸的是,许多公司声称他们拥有敏捷团队,但 ...

  5. infor wms 项目启动_广汽本田增城工厂No.2L WMS项目正式启动

    Warehouse 导读:近日,在生管科No.2L办公室,广汽本田增城工厂No.2L WMS项目启动大会如期召开.生产管理科,IT科,FNL以及汉得信息有限公司的WMS项目组成员参加了本次启动大会. ...

  6. boot sprint 项目结构_完美起航-【知识】SpringBoot项目结构目录

    Spring boot 目录结构 一.主要目录 目录名称相对路径主要用途源码目录src\main\java存储源码 资源目录src\main\resources存储静态资源.动态页面.配置文件 测试目 ...

  7. idea使用svn拉取项目代码_使用 IDEA 搭建 Hadoop3.1.1 项目

    Hadoop 的版本是 3.1.1 1. 启动 Hadoop 服务 $ start-all.sh 2. 新建 IDEA 的 Maven 项目 2.1 选中 Maven,Project SDK 选择为 ...

  8. vue打包放到Java项目里_【vue】webpack打包vue项目并且运行在Tomcat里面

    在package.json里面是script加入脚本"publish": " webpack --config webpack.publish.config.js -p& ...

  9. 原生App项目集成flutter混合开发详细指南

    记得去年9月份的时候谷歌在上海有一次开发者大会,去参加的时候关注到了flutter,随后没过多久就发布了1.0版本.18年底的时候用flutter做了个小项目,发现flutter确实挺好用的.于是尝试 ...

最新文章

  1. python画相关性可视化图上三角_完成这50个Matplotlib代码,你也能画出优秀的图表...
  2. PHP的define与const
  3. linux ndk编译so,有的APP NDK 编译的SO文件 无法调用 PackageManager
  4. SHELL 脚本小技巧
  5. 板框导入_板框结构导入有问题?这几个问题最常见,附解决方法!
  6. 【渝粤教育】国家开放大学2018年秋季 0706-22T行政管理学导论 参考试题
  7. XidianOJ 1099 A simple problem
  8. .net VS 全角问题
  9. 浏览器 制作---TWebBrowser 控件
  10. python3 类的相关内容
  11. vue引用electron_前端跨平台桌面开发技术:Electron 快速起步
  12. [从零开始学习FPGA编程-16]:快速入门篇 - 操作步骤2-4- Verilog HDL语言描述语言基本语法(软件程序员和硬件工程师都能看懂)
  13. CSS width中的max-content,min-content,fit-content的区别
  14. tyvj P1179 飘飘乎居士数列游戏
  15. selenium使用webdriver自动化浏览器打不开无法输入网址
  16. 程序员常用的画图软件/可视化和小技巧
  17. Android 大图查看器
  18. java202303java学习笔记第四十四天函数-使用规则-groud by 优化
  19. 酷狗计算机科技有限公司待遇,酷狗怎么样
  20. textmeshpro文字有阴影

热门文章

  1. selenium教程
  2. 【图像处理opencv】_简单绘图
  3. Python编程基础:第二十八节 随机数Random Numbers
  4. 数据仓库系列篇——唯品会大数据架构
  5. 数据挖掘导论读书笔记8FP树
  6. 编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS!--隆重推荐转
  7. ios 中的基本算数函数
  8. 抽象类(abstract class)和接口(Interface)的区别
  9. kaggle比赛模型融合指南
  10. 语音识别真的比肩人类了?听听阿里iDST初敏怎么说