开发者友好,简单的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 Android Studio:我的短信应用程序不是默认短信应用程序的选项之一   java处理字符串问题   java为什么我的程序打印“null”而不是字符串?   java为什么要创建一个无限循环?   java循环在一段时间后将布尔值更改为false?   java Android Rest Api Post 400错误请求   java调用另一个方法以获取resultset并正确关闭连接?   java我想在2d数组中添加一行   Java:我需要从outputstream中获取字节数组   C语言中Java元注释的等价物#   java如何在从web下载图像时保持原始图像的dpi?   java中基于输入值的spring boot动态值   java从请求中获取主机名   java可以复制Swing代码并在intelliJ中的designer中查看它吗   spring如何使用java配置多个ldap   安卓如何在Java中使用具有多个类似参数的JSON请求/响应循环?   java LIbGDX如何在语言更改时翻译所有文本?