Nine CMS是一款用于管理内容的Django应用程序。
django-ninecms的Python项目详细描述
===
nine cms
=
ninecms是一款管理内容的django应用程序。用户可以创建内容并将其发布到路径。
…图片::https://img.shields.io/travis/wtower/django ninecms/devel.svg
:目标:https://travis ci.org/wtower/django ninecms
…图片::https://img.shields.io/covertalls/wtower/django ninecms/devel.svg
:目标:https://covertalls.io/github/wtower/django ninecms
。图片::https://img.shields.io/pypi/v/django ninecms.svg
:目标:https://pypi.python.org/pypi/django ninecms
:alt:最新的pypi版本
…图片::https://img.shields.io/pypi/dm/django ninecms.svg
:目标:https://pypi.python.org/pypi/django ninecms
:alt:每月pypi下载数
管理员屏幕截图:
。图片::https://raw.githubusercontent.com/wtower/django ninecms/master/docs/screenshots/index1.png
objectives
--
对于其他语言(如php)来说,已经建立的cms非常重要。
django可以很容易地在很短的时间内用于构建异国情调的web应用程序,
因此django通常不需要另一个重量级的cms。
九个cms旨在为si提供一个公分母。在构建django应用程序或小型站点时提供简单的内容。
总而言之:
-轻量级
-易于启动和自定义项目
-受drupal节点模型架构的启发
-显然在python上使用django web框架
-质量:讨厌的bug;还测试覆盖率是100%
功能
——
-节点建模灵感来自于drupal节点,功能:
-动态内容(显然)呈现为节点
-修改系统
-国际化(i18n)从头开始
-可以自动生成的url别名基于提供的模式进行更新
-可在不同模板或视图中使用的页面类型(如下)
-每页类型权限
-清理HTML
-内容块
-菜单
-媒体管理
-图像、视频、文件
-图像样式
-视图(需要提供上下文的分离信号)
-分类法(术语)
-联系方式
-带仪表板的管理界面
-实用程序
-字符转换
-自定义标记
-基本搜索功能
-引导
需要以下内容:
-python(3.4+)
-django(1.7+,建议1.9):web framework
-django guardian(1.4+):提供每页类型的权限
-django mptt(0.8+):为标签和菜单提供树
-漂白剂(1.4+):漂白剂消毒用户html
-枕头(3+):cr为用户映像创建不同的大小
-pytz(2015+):处理用户时区
在9cms中
-django-bootstrap3:改进管理字段
-django调试工具栏:有明显原因
-mysqlclient:或任何其他db连接器
-newrelic:或任何其他监视工具
-python3 memcached:用于内存缓存
django 1.9注意:
-getting``removedindjango110warning:render()必须用dict而不是context来调用。``到几个地方。
许多其他应用程序都会收到类似的警告。在不触犯django<;1.9的情况下寻找解决方案。
新项目指南
----
这是创建新项目的完整指南。*很快将添加一个快速指南*
还有一个项目可以用作
`Django 9CMS网站样板<;http://www.github.com/wtower/django NineCMS Starter&Gt;`.
1.创建一个新项目
如果不存在,则创建一个新项目,并可选(作为提醒):
-创建新的virtualenv
-初始化git和初始提交
2。依赖项
-将以下内容添加到"requirements.txt"文件中::
django ninecms>;=0.5.4
-以及可选的:
coverage~=4.0.3
django admin bootstrapped~=2.5.6
django admin bootstrapped plus>;。=0.1.1
django-bootstrap3~=7.0.1
django调试工具栏~=1.4.0
mysqlclient~=1.3.7
newrelic~=2.60.0.46
python3 memcached~=1.51
sqlparse~=0.1.18
-然后运行::
$pip install-r requirements.txt
-downl为管理员中的富文本字段加载ckeditor(可选):
-从http://ckeditor.com/builder下载
-提取"static/ninecms/ckeditor"下的文件,使"ckeditor.js"位于此目录中
-建议将"build config.js"文件捆绑在上述目录中ory
-注意:django ckeditor包也需要类似的操作,因此不使用它。
3。设置
ninecms/settings.py中也存在所有相关设置示例作为注释。
从下面的代码示例中删除任何设置,这些设置指的是未按上述方式安装的可选软件包。
-``已安装的应用程序``设置:
已安装的应用程序=(
"ADMIN_bootstrapped_plus"、
"django_admin_bootstrapped"、
"django.contrib.admin"、
"django.contrib.auth"、
"django.contrib.contenttypes"、
"django.contrib.sessions"、
"django.contrib.messages"、
"django.contrib.messages"django.contrib.staticfiles',
"mptt",
"调试工具栏",
"守护者",
"ninecms",
"…
")
-中间件::
中间件类=(
"django.middleware.cache.updatecachemiddleware",
"django.contrib.sessions.middleware.sessionmiddleware","django.middleware.locale.localemidleware","django.middleware.common.commonmiddleware","django.middleware.cache.fetchfromcachemidleware","django.middleware.csrf"。csrfviewMiddleware',
"django.contrib.auth.middleware.authenticationMiddleware",
"django.contrib.auth.middleware.sessionAuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.xfram"eoptionsMiddleware,
"django.middleware.security.securityMiddleware",
)
-templates
添加"调试":true``仅当计划为项目创建单独的实时设置文件时::
templates=[
{
"后端':'django.template.backends.django.django templates',
'dirs':[
os.path.join(base-dir,'templates'),
],
'app-dirs':true,
'选项':{
'上下文处理器':[
'django.template.context庠processors.debug',
'django.template.context庠processors.request',
'django.contrib.auth.context庠processors.auth',
'django.contrib.messages.context庠processors.messages',
],
"调试":真的,
},
},
]
-语言::
)
时区="欧洲/雅典"或其他=true
use_l10n=true
use_tz=true
-静态和媒体::
staticfiles_dirs=(
os.path.join(base_dir,"static"),
)
media_root=os.path.join(base_dir,"media")
media_url='/media/'
-错误报告:
管理员=(
("网站管理员","web@9-dev.com"),
)
经理=(
("网站管理员","web@9-dev.com"),
)
电子邮件主机='mail.9-dev.com'
电子邮件主机用户='do not reply@9-dev.com'
email host戋u password='
email戋u use戋ssl=true
email戋port=465
email戋u subject戋u prefix='[9cms]'
server戋email='不要回复@9-dev.com'
-安全性:
登录url='/admin/login/'
secure_content_type_nosniff=true
secure_browser_xss_filter=true
x_frame_options='拒绝'
csrf_cookie_httponly=true
session_cookie name='myapp_sessionid'
-缓存::
caches={
'默认值':{
'后端':'django.core.cache.backends.dummy.dummycache',
}
}
}
cache中间件秒数=3*60*60或任何
-守护者::
身份验证后端=(
'django.contrib.auth.backends.modelbackend',这是默认值
"guardian.backends.objectpermissionbackend",
)
匿名用户ID=-1
-django管理员::
dab\u字段渲染器='django\u管理员引导。渲染器。bootstrapfieldenderer'
from django.contrib导入消息
消息标记={
消息。成功:'alert success',
消息。警告:'alert warning warning',
消息。错误:'alert danger error'
}
-cms设置::
s.settings import*
site_name="…"
site_author="…"
site_keywords="…"
i18n_url=true false
-可选的测试设置(单独的文件,例如"settings_test.py`)::
从myapp.settings import*
调试=true
密码哈希器=(
'django.contrib.auth.hashers.md5passwordhasher',
)
模板=[
{
'backend':'django.template.backends.django.django templates',
'dirs':[\disable overriden templates
],
"app-dirs":true,
"options":{
"context-processors":[
"django.template.context-processors.debug",
"django.template.context-processors.request",
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'debug':true,
},
},
]
databases={
'default':{
"引擎":"django.db.backends.sqlite3",
"名称":os.path.join(base-dir,'db.sqlite3'),
}
}
languages=(至少2
('el','greek'),
('en','english'),
)imagetyles.update({
‘thumbnail upscale’:{
‘type’:‘thumbnail upscale’,
‘size’:(150,150)
},
})
-live的可选设置(单独的文件,例如``settings\u live.py``)::
从myapp导入设置*
debug=false
允许的_主机=[
…
]
模板=[
{
"后端":"django.template.backends.django.django templates",
"目录":[
os.path.join(基目录,"模板"),
],
"应用目录":true,
"选项":{
'上下文处理器':[
'django.template.context庠processors.debug',
'django.template.context庠processors.request',
'django.contrib.auth.context庠processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
ache',
"位置":"127.0.0.1:11211",
"超时":3*60*60,或任何
"密钥前缀":"myapp",
"版本":1,
}
}
}
4。在项目根目录中创建空文件夹:
-``/static/`
-``/media/``
-*可选*将图像从
https://github.com/wtower/django-ninecms-starter/tree/master/media/ninecms/basic/image复制到
`/media/ninecms/basic/image``如果要运行NineCMS测试(见下文)。
5.运行`./manage.py migrate``创建模型。
6。url配置
-包括admin、i18n和9cms的url配置
-确保9cms url conf是最后一行,以便动态路由器捕获所有url。
-包括``robots.txt`
-包括本地服务器的静态文件
url示例:om django.conf import settings
from django.conf.urls import include,url
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
from django.contrib import admin
from django.views.generic import templateview
urlpatterns=[
url(r'^admin/',include(admin.site.urls)),
url(r'^i18n/',include('django.conf.urls.i18n'),
url(r'^robots\.txt/$',template view.as(template''ninecms/robots.txt',content''type''text/plain'),
]
(图像、css、javascript等)
如果设置。调试:
urlpatterns+=静态(settings.media戋url,document戋root=settings.media戋root)戋pragma:no cover
last:all remaining pass to cms
如果设置。i18n戋url:戋pragma:nocover
urlpatterns+=i18n嫒u模式(
url(r'^',include('ninecms.urls',namespace='ninecms')),
)
其他:嫒pragma:nocover
url patterns+=[
url(r'^',include('ninecms.urls',namespace='ninecms'),
]
7。启动开发服务器并访问http://127.0.0.1:8000/admin/
访问http://127.0.0.1:8000/查看内容。
>9。或者使用"python manage.py test--settings=myapp.settings\u test ninecms```运行测试。
>;从这里开始,常见任务包括:
-theming(见下文)
-添加页面类型
-添加内容
-添加菜单
-添加块
直截了当。除了开发自定义主题之外,还可以很容易地使用Web上无数可用主题中的任何现成的HTML主题。
*(v0.6.0中的更改)*
基类声明文档类型(html5),
加载脚本,所有脚本都在块中定义。
索引文件是最可能需要重写的文件。你可以检查底座,看看出现以下块。这些是按外观顺序定义的:
-``meta`:在``<;head>;````中定义任何自定义关键字。
根据设置和显示的节点(页)生成一些默认值。
-``head`:在`<;head>;``底部定义任何其他元素。
con和其他样式表/头脚本。
-``body_attrs``:定义要附加到`<;body>;````的任何其他属性。
默认值是``class``仅。
-``body_top``:指向页面顶部的小链接。默认情况下,一个小的javascript使用它在向下滚动之后在页面的右下角显示一个小的固定顶部链接。如果不重写,
那么您可能需要为"toplink"添加一个"static/ninecms/images/toplink.png"背景或自定义css。
-"body"loader`:定义了一个方便的页面加载程序(启动屏幕)。
重写,如果不合适,留空。
-"content`:这是main需要在索引中重写的内容块。
-`` body_bottom`:页面底部的一个不可见的小链接。
-`` body_scripts``:在`<;body>;``底部定义任何其他内容。
此处添加要在文档末尾加载的其他脚本。
索引文件是使用的默认模板,但可以扩展为在页面类型中使用
(请参见下面的主题建议)。
clude%}`或者可以直接复制到自定义模板中。
ninecms根据模板文件名为页面类型选择模板
,顺序如下:
-``页面[页面类型.名称]``
-`[页面类型.名称]``
-``索引.html`
,其中``[页面类型.名称]``是页面类型的计算机名称,
例如,如果页面类型名称是'basic page则是"basic_page"。
在ninecms中,除了逻辑地将内容组织到相关的页面类型(也可以使用分类术语)之外,每种页面类型都可以具有不同的页面布局,
具有不同的块。
类似于y的模型,
例如在drupal中。不打算添加这样的功能,因为django模型可以很容易地添加到代码中并扩展cms功能。
url别名
----
>每个内容类型下的节点都可以有一个预先指定的默认url别名。如果该页类型的节点未指定url别名,则将使用默认值。
``:节点创建的日期。
-`[节点:已更改:格式]`:上次节点更新的日期。
-格式可以是
``(说明符)(分隔符)(分隔符)(说明符)(说明符)(分隔符)(说明符)``格式中的任何"php日期格式"说明符,例如``d-m-y`.
。_ php日期格式:http://www.php.net/date
block types
----
链接到菜单项的菜单或子菜单。
-``signal`:调用特定于站点的自定义视图呈现(请参阅下面的视图)。
-``language`:呈现语言切换菜单。
-``user menu`:呈现具有登录/注销或注册链接的用户菜单。
-``log在``:呈现登录表单。
-``搜索`:呈现搜索表单。
-``搜索结果`:呈现搜索结果。简单的搜索功能。对于高级搜索,需要使用适当的包
。对于搜索结果页,添加新的页类型并实现块。不区分大小写的
无法在sqlite中执行搜索(另请参见下面的要点)。
-``contact`:呈现联系人表单。
views
----
s.py``关于如何对信号进行编码的文件。
权限摘要
----
这是所有适用权限的摘要:
-django admin:
-user:is staff(访问管理员)
-user:is superuser(小心)
-无条件访问所有位置
-节点的其他字段
-仪表板
-仪表板上的实用程序
-用户:添加、更改、删除
-组:添加、更改、删除
-权限:添加、更改、删除
-监护人:
-用户对象权限:添加、更改、删除
-组对象权限:添加、更改、删除
-9cms:
ns:add,change,delete
-节点:可以使用完整的html
-节点:view unpublished
-每个内容类型的组权限(由guardian提供,可通过"页面类型"更改列表管理页访问)
组权限配置示例:
-节点:view unpublished
-节点:add
-节点:change
-图片:添加、更改、删除
-页面类型特定权限:添加、更改
我很感动,因为已经有好几种可用的方法了。
ninecms的扩展很快就可以解决这个问题。或者,"django bower"是好的。
可以在"ninecms/settings.py"中找到一些预定义的样式。
可以使用项目的"settings.py"中的"image\u style s"来扩展或替换这些样式。
这是一个字典,其中索引是定义的样式名,其值是一个带有索引"type"和"value"的字典。例如::
image_styles.update({'my_style':{'type':'thumbnail','size':(120,100)})
提供的维度的比率及其缩放比例。
他的事。
为了使用图像样式,必须将其安装在服务器上。当第一次请求特定图像的图像样式时,ninecms使用imagemagick在
初始文件路径中的新目录中创建一个新文件,文件名为该样式。要刷新此文件缓存,只需使用
样式名删除目录。小心不要取出原始文件。
枕头尚未使用,因为当时它与蟒蛇3有多个问题。如果大型memcache或redis可用,那么对于高流量网站来说,`sorl thumbnail<;https://github.com/mariocesar/sorl thumbnail>;``可能是一个更好的解决方案s.
要点
----
-如果i18n URL:内部页面的菜单项应始终具有语言[v0.3.1a]
-搜索页面需要页面类型中的搜索结果块和"搜索"别名,不需要sqlite[v0.4.4b]
-在设置中添加语言18N_u网址[v0.4.7b]
footnote
——
对本项目的任何贡献都非常感谢,我们将尽最大努力予以回应。
nine cms
=
ninecms是一款管理内容的django应用程序。用户可以创建内容并将其发布到路径。
…图片::https://img.shields.io/travis/wtower/django ninecms/devel.svg
:目标:https://travis ci.org/wtower/django ninecms
…图片::https://img.shields.io/covertalls/wtower/django ninecms/devel.svg
:目标:https://covertalls.io/github/wtower/django ninecms
。图片::https://img.shields.io/pypi/v/django ninecms.svg
:目标:https://pypi.python.org/pypi/django ninecms
:alt:最新的pypi版本
…图片::https://img.shields.io/pypi/dm/django ninecms.svg
:目标:https://pypi.python.org/pypi/django ninecms
:alt:每月pypi下载数
管理员屏幕截图:
。图片::https://raw.githubusercontent.com/wtower/django ninecms/master/docs/screenshots/index1.png
objectives
--
对于其他语言(如php)来说,已经建立的cms非常重要。
django可以很容易地在很短的时间内用于构建异国情调的web应用程序,
因此django通常不需要另一个重量级的cms。
九个cms旨在为si提供一个公分母。在构建django应用程序或小型站点时提供简单的内容。
总而言之:
-轻量级
-易于启动和自定义项目
-受drupal节点模型架构的启发
-显然在python上使用django web框架
-质量:讨厌的bug;还测试覆盖率是100%
功能
——
-节点建模灵感来自于drupal节点,功能:
-动态内容(显然)呈现为节点
-修改系统
-国际化(i18n)从头开始
-可以自动生成的url别名基于提供的模式进行更新
-可在不同模板或视图中使用的页面类型(如下)
-每页类型权限
-清理HTML
-内容块
-菜单
-媒体管理
-图像、视频、文件
-图像样式
-视图(需要提供上下文的分离信号)
-分类法(术语)
-联系方式
-带仪表板的管理界面
-实用程序
-字符转换
-自定义标记
-基本搜索功能
-引导
需要以下内容:
-python(3.4+)
-django(1.7+,建议1.9):web framework
-django guardian(1.4+):提供每页类型的权限
-django mptt(0.8+):为标签和菜单提供树
-漂白剂(1.4+):漂白剂消毒用户html
-枕头(3+):cr为用户映像创建不同的大小
-pytz(2015+):处理用户时区
在9cms中
-django-bootstrap3:改进管理字段
-django调试工具栏:有明显原因
-mysqlclient:或任何其他db连接器
-newrelic:或任何其他监视工具
-python3 memcached:用于内存缓存
django 1.9注意:
-getting``removedindjango110warning:render()必须用dict而不是context来调用。``到几个地方。
许多其他应用程序都会收到类似的警告。在不触犯django<;1.9的情况下寻找解决方案。
新项目指南
----
这是创建新项目的完整指南。*很快将添加一个快速指南*
还有一个项目可以用作
`Django 9CMS网站样板<;http://www.github.com/wtower/django NineCMS Starter&Gt;`.
1.创建一个新项目
如果不存在,则创建一个新项目,并可选(作为提醒):
-创建新的virtualenv
-初始化git和初始提交
2。依赖项
-将以下内容添加到"requirements.txt"文件中::
-以及可选的:
coverage~=4.0.3
django admin bootstrapped~=2.5.6
django admin bootstrapped plus>;。=0.1.1
django-bootstrap3~=7.0.1
django调试工具栏~=1.4.0
mysqlclient~=1.3.7
newrelic~=2.60.0.46
python3 memcached~=1.51
sqlparse~=0.1.18
-然后运行::
$pip install-r requirements.txt
-downl为管理员中的富文本字段加载ckeditor(可选):
-从http://ckeditor.com/builder下载
-提取"static/ninecms/ckeditor"下的文件,使"ckeditor.js"位于此目录中
-建议将"build config.js"文件捆绑在上述目录中ory
-注意:django ckeditor包也需要类似的操作,因此不使用它。
3。设置
ninecms/settings.py中也存在所有相关设置示例作为注释。
从下面的代码示例中删除任何设置,这些设置指的是未按上述方式安装的可选软件包。
-``已安装的应用程序``设置:
已安装的应用程序=(
"ADMIN_bootstrapped_plus"、
"django_admin_bootstrapped"、
"django.contrib.admin"、
"django.contrib.auth"、
"django.contrib.contenttypes"、
"django.contrib.sessions"、
"django.contrib.messages"、
"django.contrib.messages"django.contrib.staticfiles',
"mptt",
"调试工具栏",
"守护者",
"ninecms",
"…
")
-中间件::
中间件类=(
"django.middleware.cache.updatecachemiddleware",
"django.contrib.sessions.middleware.sessionmiddleware","django.middleware.locale.localemidleware","django.middleware.common.commonmiddleware","django.middleware.cache.fetchfromcachemidleware","django.middleware.csrf"。csrfviewMiddleware',
"django.contrib.auth.middleware.authenticationMiddleware",
"django.contrib.auth.middleware.sessionAuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.xfram"eoptionsMiddleware,
"django.middleware.security.securityMiddleware",
)
-templates
添加"调试":true``仅当计划为项目创建单独的实时设置文件时::
templates=[
{
"后端':'django.template.backends.django.django templates',
'dirs':[
os.path.join(base-dir,'templates'),
],
'app-dirs':true,
'选项':{
'上下文处理器':[
'django.template.context庠processors.debug',
'django.template.context庠processors.request',
'django.contrib.auth.context庠processors.auth',
'django.contrib.messages.context庠processors.messages',
],
"调试":真的,
},
},
]
-语言::
)
时区="欧洲/雅典"或其他=true
use_l10n=true
use_tz=true
-静态和媒体::
staticfiles_dirs=(
os.path.join(base_dir,"static"),
)
media_root=os.path.join(base_dir,"media")
media_url='/media/'
-错误报告:
管理员=(
("网站管理员","web@9-dev.com"),
)
经理=(
("网站管理员","web@9-dev.com"),
)
电子邮件主机='mail.9-dev.com'
电子邮件主机用户='do not reply@9-dev.com'
email host戋u password='
email戋u use戋ssl=true
email戋port=465
email戋u subject戋u prefix='[9cms]'
server戋email='不要回复@9-dev.com'
-安全性:
登录url='/admin/login/'
secure_content_type_nosniff=true
secure_browser_xss_filter=true
x_frame_options='拒绝'
csrf_cookie_httponly=true
session_cookie name='myapp_sessionid'
-缓存::
caches={
'默认值':{
'后端':'django.core.cache.backends.dummy.dummycache',
}
}
}
cache中间件秒数=3*60*60或任何
-守护者::
身份验证后端=(
'django.contrib.auth.backends.modelbackend',这是默认值
"guardian.backends.objectpermissionbackend",
)
匿名用户ID=-1
-django管理员::
dab\u字段渲染器='django\u管理员引导。渲染器。bootstrapfieldenderer'
from django.contrib导入消息
消息标记={
消息。成功:'alert success',
消息。警告:'alert warning warning',
消息。错误:'alert danger error'
}
-cms设置::
s.settings import*
site_name="…"
site_author="…"
site_keywords="…"
i18n_url=true false
-可选的测试设置(单独的文件,例如"settings_test.py`)::
从myapp.settings import*
调试=true
密码哈希器=(
'django.contrib.auth.hashers.md5passwordhasher',
)
模板=[
{
'backend':'django.template.backends.django.django templates',
'dirs':[\disable overriden templates
],
"app-dirs":true,
"options":{
"context-processors":[
"django.template.context-processors.debug",
"django.template.context-processors.request",
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'debug':true,
},
},
]
databases={
'default':{
"引擎":"django.db.backends.sqlite3",
"名称":os.path.join(base-dir,'db.sqlite3'),
}
}
languages=(至少2
('el','greek'),
('en','english'),
)imagetyles.update({
‘thumbnail upscale’:{
‘type’:‘thumbnail upscale’,
‘size’:(150,150)
},
})
-live的可选设置(单独的文件,例如``settings\u live.py``)::
从myapp导入设置*
debug=false
允许的_主机=[
…
]
模板=[
{
"后端":"django.template.backends.django.django templates",
"目录":[
os.path.join(基目录,"模板"),
],
"应用目录":true,
"选项":{
'上下文处理器':[
'django.template.context庠processors.debug',
'django.template.context庠processors.request',
'django.contrib.auth.context庠processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
ache',
"位置":"127.0.0.1:11211",
"超时":3*60*60,或任何
"密钥前缀":"myapp",
"版本":1,
}
}
}
4。在项目根目录中创建空文件夹:
-``/static/`
-``/media/``
-*可选*将图像从
https://github.com/wtower/django-ninecms-starter/tree/master/media/ninecms/basic/image复制到
`/media/ninecms/basic/image``如果要运行NineCMS测试(见下文)。
5.运行`./manage.py migrate``创建模型。
6。url配置
-包括admin、i18n和9cms的url配置
-确保9cms url conf是最后一行,以便动态路由器捕获所有url。
-包括``robots.txt`
-包括本地服务器的静态文件
url示例:om django.conf import settings
from django.conf.urls import include,url
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
from django.contrib import admin
from django.views.generic import templateview
urlpatterns=[
url(r'^admin/',include(admin.site.urls)),
url(r'^i18n/',include('django.conf.urls.i18n'),
url(r'^robots\.txt/$',template view.as(template''ninecms/robots.txt',content''type''text/plain'),
]
(图像、css、javascript等)
如果设置。调试:
urlpatterns+=静态(settings.media戋url,document戋root=settings.media戋root)戋pragma:no cover
last:all remaining pass to cms
如果设置。i18n戋url:戋pragma:nocover
urlpatterns+=i18n嫒u模式(
url(r'^',include('ninecms.urls',namespace='ninecms')),
)
其他:嫒pragma:nocover
url patterns+=[
url(r'^',include('ninecms.urls',namespace='ninecms'),
]
7。启动开发服务器并访问http://127.0.0.1:8000/admin/
访问http://127.0.0.1:8000/查看内容。
>9。或者使用"python manage.py test--settings=myapp.settings\u test ninecms```运行测试。
>;从这里开始,常见任务包括:
-theming(见下文)
-添加页面类型
-添加内容
-添加菜单
-添加块
直截了当。除了开发自定义主题之外,还可以很容易地使用Web上无数可用主题中的任何现成的HTML主题。
*(v0.6.0中的更改)*
基类声明文档类型(html5),
加载脚本,所有脚本都在块中定义。
索引文件是最可能需要重写的文件。你可以检查底座,看看出现以下块。这些是按外观顺序定义的:
-``meta`:在``<;head>;````中定义任何自定义关键字。
根据设置和显示的节点(页)生成一些默认值。
-``head`:在`<;head>;``底部定义任何其他元素。
con和其他样式表/头脚本。
-``body_attrs``:定义要附加到`<;body>;````的任何其他属性。
默认值是``class``仅。
-``body_top``:指向页面顶部的小链接。默认情况下,一个小的javascript使用它在向下滚动之后在页面的右下角显示一个小的固定顶部链接。如果不重写,
那么您可能需要为"toplink"添加一个"static/ninecms/images/toplink.png"背景或自定义css。
-"body"loader`:定义了一个方便的页面加载程序(启动屏幕)。
重写,如果不合适,留空。
-"content`:这是main需要在索引中重写的内容块。
-`` body_bottom`:页面底部的一个不可见的小链接。
-`` body_scripts``:在`<;body>;``底部定义任何其他内容。
此处添加要在文档末尾加载的其他脚本。
索引文件是使用的默认模板,但可以扩展为在页面类型中使用
(请参见下面的主题建议)。
clude%}`或者可以直接复制到自定义模板中。
ninecms根据模板文件名为页面类型选择模板
,顺序如下:
-``页面[页面类型.名称]``
-`[页面类型.名称]``
-``索引.html`
,其中``[页面类型.名称]``是页面类型的计算机名称,
例如,如果页面类型名称是'basic page则是"basic_page"。
在ninecms中,除了逻辑地将内容组织到相关的页面类型(也可以使用分类术语)之外,每种页面类型都可以具有不同的页面布局,
具有不同的块。
类似于y的模型,
例如在drupal中。不打算添加这样的功能,因为django模型可以很容易地添加到代码中并扩展cms功能。
url别名
----
>每个内容类型下的节点都可以有一个预先指定的默认url别名。如果该页类型的节点未指定url别名,则将使用默认值。
``:节点创建的日期。
-`[节点:已更改:格式]`:上次节点更新的日期。
-格式可以是
``(说明符)(分隔符)(分隔符)(说明符)(说明符)(分隔符)(说明符)``格式中的任何"php日期格式"说明符,例如``d-m-y`.
。_ php日期格式:http://www.php.net/date
block types
----
链接到菜单项的菜单或子菜单。
-``signal`:调用特定于站点的自定义视图呈现(请参阅下面的视图)。
-``language`:呈现语言切换菜单。
-``user menu`:呈现具有登录/注销或注册链接的用户菜单。
-``log在``:呈现登录表单。
-``搜索`:呈现搜索表单。
-``搜索结果`:呈现搜索结果。简单的搜索功能。对于高级搜索,需要使用适当的包
。对于搜索结果页,添加新的页类型并实现块。不区分大小写的
无法在sqlite中执行搜索(另请参见下面的要点)。
-``contact`:呈现联系人表单。
views
----
s.py``关于如何对信号进行编码的文件。
权限摘要
----
这是所有适用权限的摘要:
-django admin:
-user:is staff(访问管理员)
-user:is superuser(小心)
-无条件访问所有位置
-节点的其他字段
-仪表板
-仪表板上的实用程序
-用户:添加、更改、删除
-组:添加、更改、删除
-权限:添加、更改、删除
-监护人:
-用户对象权限:添加、更改、删除
-组对象权限:添加、更改、删除
-9cms:
ns:add,change,delete
-节点:可以使用完整的html
-节点:view unpublished
-每个内容类型的组权限(由guardian提供,可通过"页面类型"更改列表管理页访问)
组权限配置示例:
-节点:view unpublished
-节点:add
-节点:change
-图片:添加、更改、删除
-页面类型特定权限:添加、更改
我很感动,因为已经有好几种可用的方法了。
ninecms的扩展很快就可以解决这个问题。或者,"django bower"是好的。
可以在"ninecms/settings.py"中找到一些预定义的样式。
可以使用项目的"settings.py"中的"image\u style s"来扩展或替换这些样式。
这是一个字典,其中索引是定义的样式名,其值是一个带有索引"type"和"value"的字典。例如::
image_styles.update({'my_style':{'type':'thumbnail','size':(120,100)})
提供的维度的比率及其缩放比例。
他的事。
为了使用图像样式,必须将其安装在服务器上。当第一次请求特定图像的图像样式时,ninecms使用imagemagick在
初始文件路径中的新目录中创建一个新文件,文件名为该样式。要刷新此文件缓存,只需使用
样式名删除目录。小心不要取出原始文件。
枕头尚未使用,因为当时它与蟒蛇3有多个问题。如果大型memcache或redis可用,那么对于高流量网站来说,`sorl thumbnail<;https://github.com/mariocesar/sorl thumbnail>;``可能是一个更好的解决方案s.
要点
----
-如果i18n URL:内部页面的菜单项应始终具有语言[v0.3.1a]
-搜索页面需要页面类型中的搜索结果块和"搜索"别名,不需要sqlite[v0.4.4b]
-在设置中添加语言18N_u网址[v0.4.7b]
footnote
——
对本项目的任何贡献都非常感谢,我们将尽最大努力予以回应。