开发者友好,简单的Django CMS,“类固醇平板”。
django-powerpages的Python项目详细描述
开发者友好,简单的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.WebsiteLoader。 TEMPLATES -> 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
用法
管理员屏幕截图:
使用admin
编辑页面管理界面允许使用以下字段编辑页面:
- url-每页的唯一地址
- alias-用于解析其url地址的页的可选代码名
- title,description,keywords-使用元标记的便利字段
- template-页面内容作为django模板源
- page processor和page processor config-用于分配和自定义服务器端逻辑的选项
使用{% page_url alias %}可以在模板中反转页面的url地址。 此模板标记还可以反转常规django视图的url。
页面模板作为常规django模板工作,只需稍加修改:
- {% extends ... %}不应使用标记:
- 默认情况下,每个模板都继承自父页的模板
- 通过向页面处理器配置提供base template选项,可以覆盖父模板
- {% 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 Permanently或302 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的changefreq和priority的默认值都可以使用settings.POWER_PAGES:
POWER_PAGES={# (...)'SITEMAP_DEFAULT_CHANGEFREQ':'weekly','SITEMAP_DEFAULT_PRIORITY':0.7,}
要将应用程序中的自定义URL添加到站点地图,您可以定义和注册 应用程序中sitemap.py文件中Sitemap或ModelSitemap类的子类:
# 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