开发者友好,简单的Django CMS,“类固醇平板”。

django-powerpages的Python项目详细描述


https://api.travis-ci.org/Open-E-WEB/django-powerpages.svg?branch=masterhttps://img.shields.io/pypi/v/django-powerpages.svghttps://coveralls.io/repos/github/Open-E-WEB/django-powerpages/badge.svg?branch=master

开发者友好,简单的Django CMS,“类固醇平板”。

功能

  • 使用语法突出显示在管理中编辑页面-HTML、CSS、JavaScript、django模板语言
  • 使用您喜爱的文本编辑器或IDE将页面编辑为文件
  • 使用django命令按需同步数据库和文件系统之间的页面
  • 与Django的模板系统集成
  • 通过可配置的页面处理器将自定义服务器端逻辑附加到页面
  • sitemap.xml

安装

使用pip安装软件包:

pipinstalldjango-powerpages

'powerpages'添加到设置模块中的INSTALLED_APPS

INSTALLED_APPS=(...'powerpages',)

定义POWER_PAGES设置:

POWER_PAGES={# absolute path to directory, where page files are located:'SYNC_DIRECTORY':'/path/to/directory/'}

在urlconf的末尾包含应用程序的url:

urlpatterns=[...url(r'',include('powerpages.urls',namespace='powerpages')),]

在中的loaders末尾添加powerpages.loader.WebsiteLoaderTEMPLATES -> OPTIONS设置:

TEMPLATES=[{...'OPTIONS':{...'loaders':['django.template.loaders.filesystem.Loader','django.template.loaders.app_directories.Loader',# Database template loader for powerpages app'powerpages.loader.WebsiteLoader',],...}...}]

运行迁移:

pythonmanage.pymigrate

用法

管理员屏幕截图:

powerpages-scr-01.pngpowerpages-scr-02.png

使用admin

编辑页面

管理界面允许使用以下字段编辑页面:

  • url-每页的唯一地址
  • alias-用于解析其url地址的页的可选代码名
  • titledescriptionkeywords-使用元标记的便利字段
  • template-页面内容作为django模板源
  • page processorpage processor config-用于分配和自定义服务器端逻辑的选项

使用{% page_url alias %}可以在模板中反转页面的url地址。 此模板标记还可以反转常规django视图的url。

页面模板作为常规django模板工作,只需稍加修改:

  1. {% extends ... %}不应使用标记:
  • 默认情况下,每个模板都继承自父页的模板
  • 通过向页面处理器配置提供base template选项,可以覆盖父模板
  1. {% load ... %}不需要标记:
  • 自动加载settings.POWER_PAGES['TAG_LIBRARIES']中的模板标记库
  • 可以使用页面处理器配置中的tag libraries提供其他库

page processor字段允许选择负责处理当前页请求的python类。 页面处理器可以使用page processor config字段中的yaml config进行配置。 默认值powerpages.DefaultPageProcessor只是呈现页面内容,并将输出作为200 OK响应返回。 其他预定义选项包括:

  • powerpages.RedirectProcessor-根据布尔型参数permanent创建301 Moved Permanently302 Found响应。重定向位置由url(参数to url)、视图名(to name)或页面别名(to alias)提供。
  • powerpages.NotFoundProcessor-生成404 Not Found响应。

默认页处理器配置示例:

basetemplate:myapp/base.htmlcontextprocessors:-myapp.context_processors.contexttaglibraries:-myapp_tagsheaders:{x-magic-id:'42'}cache:300cacheforuser:truesitemap:false

要定义自定义页处理器,可以创建^{tt24}的子类$ 在应用程序中的page_processors.py文件中:

# myapp/page_processors.pyfrompowerpages.page_processorsimportDefaultPageProcessorfrompowerpages.page_processor_registryimportregisterclassMyPageProcessor(DefaultPageProcessor):defprocess_request(self,request,extra_context=None):"""Process a request and create HTTP Response."""# Put your custom view logic hereregister(MyPageProcessor)

在“编辑模式”下浏览网站

管理员中的“编辑模式”按钮允许在浏览网站时显示当前页面的信息。 用户使用edit mode按钮为管理中的当前会话启用“编辑模式”。 仅当模板标记{% current_page_info %}已添加到模板源时,此模式才起作用。

文件数据库同步

通过website_dump命令将页从数据库导出到文件系统。 所有页面都保存为settings.POWER_PAGES['SYNC_DIRECTORY']中的文件和目录结构。 导出的页面可以使用文本编辑器进行修改,然后重新加载到数据库中。

pythonmanage.pywebsite_dump

输出目录的示例结构:

_index_.pageabout-us/_index_.pageabout-us/contact.pagedownload.pagerobots.txt

每个转储文件都具有以下结构:

{...pagefieldsasJSON}## TEMPLATE SOURCE: ##...templatecontent(plaintext)

将页面从目录导入database使用website_load命令完成。

pythonmanage.pywebsite_load

两个网站命令都接受各种选项来调整其行为。 对于选项的完整列表,请使用--help

XML站点地图

django-powerpages附带了一个用于定义xml站点地图的系统(可替代django.contrib.sitemaps)。 默认情况下,所有可访问的页面都作为url列在sitemap.xml中。 要从站点地图中删除页面,用户可以在页面处理器配置中添加以下选项:

sitemap:false

sitemap选项可用于修改页面的站点地图参数:

sitemap:{changefreq:'daily',priority:0.9}

所有url的changefreqpriority的默认值都可以使用settings.POWER_PAGES

POWER_PAGES={# (...)'SITEMAP_DEFAULT_CHANGEFREQ':'weekly','SITEMAP_DEFAULT_PRIORITY':0.7,}

要将应用程序中的自定义URL添加到站点地图,您可以定义和注册 应用程序中sitemap.py文件中SitemapModelSitemap类的子类:

# myapp/sitemap.pyfrompowerpagesimportsitemap_configfrommyapp.modelsimportMyModelclassMyModelSitemap(sitemap_config.ModelSitemap):"""Sitemap config for Storage Powered by Open-E document files"""queryset=MyModel.objects.all()classMyStaticSitemap(sitemap_config.Sitemap):items=({'location':sitemap_config.NamedURL('myview')},{'location':sitemap_config.NamedURL('myview2',param='value')})sitemap_config.sitemaps.add(MyModelSitemap)sitemap_config.sitemaps.add(MyStaticSitemap)

要求

Python:2.7、3.4、3.5

django:1.9、1.10

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何修复尝试将用户签名到服务器主机时出现的“字符串无法转换为json对象”错误?   控制台Java:不使用新行更新命令行中的文本   java servlet接收xml数据时,出现错误   使用REST API在Bitbucket中复制或复制存储库   java如何在JavaFX中对齐一行?   java如何在活动中显示通过服务获得的数据?   返回BigDecimal作为字符串:返回int   java组织。openqa。硒。InvalidSelectorException:尝试查找元素时选择器无效   java仅在阻塞状态下通知和通知所有影响线程   java JBOSS无法启动部署   java方法的返回值能保证类型安全吗?   JavaeShadoop序列化组织。阿帕奇。hadoop。木卫一。短写失败   java如果我在同一个类上同步了两个方法,它们能同时运行吗?   不使用java数据库的spring分页实现   java如何将字符串切碎成这样的数组?