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项目中相关推荐
- pycharm如何更改python项目环境_如何用Pycharm打开已有项目配置python环境
如何用Pycharm打开已有项目配置python环境 发布时间:2020-07-06 11:06:30 来源:亿速云 阅读:175 作者:清晨 这篇文章将为大家详细讲解有关如何用Pycharm打开已有 ...
- java项目管理系统_基于SSM框架的JAVA科研项目管理系统
每天记录学习,每天会有好心情.*^_^* 今天记录的项目是科研项目管理系统论文,这个项目是这么回事:随着计算机应用水平的提高和科研管理的规范化和制度化,建立一套适用于科研院所科研管理工作的科研项目管理 ...
- sphinx 项目根目录_如何使用Sphinx工具记录Django项目
sphinx 项目根目录 I recently visited a company where I had a nice talk with one of its employees. We talk ...
- 敏捷开发团队 项目分工_如何为您的软件开发项目建立敏捷团队
敏捷开发团队 项目分工 敏捷公司认为团队合作对于交付工作软件至关重要,而优秀的敏捷团队则关注"我们"而不是" I". 不幸的是,许多公司声称他们拥有敏捷团队,但 ...
- infor wms 项目启动_广汽本田增城工厂No.2L WMS项目正式启动
Warehouse 导读:近日,在生管科No.2L办公室,广汽本田增城工厂No.2L WMS项目启动大会如期召开.生产管理科,IT科,FNL以及汉得信息有限公司的WMS项目组成员参加了本次启动大会. ...
- boot sprint 项目结构_完美起航-【知识】SpringBoot项目结构目录
Spring boot 目录结构 一.主要目录 目录名称相对路径主要用途源码目录src\main\java存储源码 资源目录src\main\resources存储静态资源.动态页面.配置文件 测试目 ...
- idea使用svn拉取项目代码_使用 IDEA 搭建 Hadoop3.1.1 项目
Hadoop 的版本是 3.1.1 1. 启动 Hadoop 服务 $ start-all.sh 2. 新建 IDEA 的 Maven 项目 2.1 选中 Maven,Project SDK 选择为 ...
- vue打包放到Java项目里_【vue】webpack打包vue项目并且运行在Tomcat里面
在package.json里面是script加入脚本"publish": " webpack --config webpack.publish.config.js -p& ...
- 原生App项目集成flutter混合开发详细指南
记得去年9月份的时候谷歌在上海有一次开发者大会,去参加的时候关注到了flutter,随后没过多久就发布了1.0版本.18年底的时候用flutter做了个小项目,发现flutter确实挺好用的.于是尝试 ...
最新文章
- python画相关性可视化图上三角_完成这50个Matplotlib代码,你也能画出优秀的图表...
- PHP的define与const
- linux ndk编译so,有的APP NDK 编译的SO文件 无法调用 PackageManager
- SHELL 脚本小技巧
- 板框导入_板框结构导入有问题?这几个问题最常见,附解决方法!
- 【渝粤教育】国家开放大学2018年秋季 0706-22T行政管理学导论 参考试题
- XidianOJ 1099 A simple problem
- .net VS 全角问题
- 浏览器 制作---TWebBrowser 控件
- python3 类的相关内容
- vue引用electron_前端跨平台桌面开发技术:Electron 快速起步
- [从零开始学习FPGA编程-16]:快速入门篇 - 操作步骤2-4- Verilog HDL语言描述语言基本语法(软件程序员和硬件工程师都能看懂)
- CSS width中的max-content,min-content,fit-content的区别
- tyvj P1179 飘飘乎居士数列游戏
- selenium使用webdriver自动化浏览器打不开无法输入网址
- 程序员常用的画图软件/可视化和小技巧
- Android 大图查看器
- java202303java学习笔记第四十四天函数-使用规则-groud by 优化
- 酷狗计算机科技有限公司待遇,酷狗怎么样
- textmeshpro文字有阴影