django-flatblocks类似于django.contrib.flatpages,但用于页面的一部分;就像你想要显示在主要内容旁边的可编辑的帮助框。
项目描述
django-flatblocks是一个用于处理网站上的小型文本块的简单应用程序。将其视为类似于django.contrib.flatpages,但不是整个页面,而是页面的部分,如描述网站上可以做什么的信息文本。
安装
安装此应用程序最简单的方法可能是首先运行 pip install django-flatblocks。完成此步骤后,将 "flatblocks" 添加到您的 settings.py 文件中的 INSTALLED_APPS 设置,并运行 python manage.py syncdb 以更新您的数据库。
升级
自 0.6.0 版本起,django-flatblocks 使用 South 来处理数据和模式迁移,因此这里适用 South 典型的更新路径。
如果您是从 0.5.x 版本或更早版本升级,您需要分三步进行迁移
安装 south。
使用 South 将数据库迁移到 flatblocks 的第一个版本
./manage.py migrate flatblocks 0001 --fake
然后使用 South 将数据库迁移到 flatblocks 数据库和数据结构的最新版本
./manage.py migrate flatblocks
用法
一旦创建了 flatblocks.models.FlatBlock 模型的实例,您可以使用 flatblocks 模板标签库来加载它
{% load flatblocks %}
<html>
<head>
<!-- ... -->
</head>
<body>
<div id="page">
<div id="main">
<!-- ... -->
</div>
<div id="sidebar">
{% flatblock "page.info" %}
</div>
</div>
</body>
</html>
这样,您就可以显示一个名为 'page.info' 的文本块。如果您在模板变量中有块的名称,请省略引号。
此外,您还可以指定用于渲染 flatblock 的模板
{% flatblock "page.info" using="my_template.html" %}
<!-- -->
{% flatblock "page.about" using="my_template.html" %}
如果您想简单地输出 flatblock 的 content 字段的值而不使用任何模板,您可以使用以下任一选项
{% flatblock "page.info" using=False %}
或
{% plain_flatblock "page.info" %}
与 flatblock 的 slug 一样,模板名称也允许您选择使用模板的文本书名或将其作为变量传递给模板标签。
flatblock 的内容(以及其标题)也可以作为完整的 Django 模板进行评估
{% flatblock "page.info" evaluated=True %}
这也适用于其他参数,如自定义模板和 plain_flatblock 模板标签
{% flatblock "page.info" evaluated=True using="my_template.html" %}
<!-- -->
{% plain_flatblock "page.about" evaluated=True %}
编辑视图
通过 flatblocks.views.edit,django-flatblocks 为您的前端提供了一个简单的视图来编辑 flatblocks。要使用它,只需将其包含在您的 URLconf 中,并创建一个 flatblocks/edit.html 模板。
默认情况下,视图不执行任何权限检查,因此您应该在 URLconf 中相应地装饰它
from flatblocks.views import edit
from django.contrib.auth.decorators import login_required
# ...
urlpatterns = pattern('',
url(r'^flatblocks/(?P<pk>\d+)/edit/$', login_required(edit),
name='flatblocks-edit'),
# ...
)
模板可以操作以下变量
form
flatblock
origin(上一页的 URL)
此外,视图通过以下关键字参数提供了一些基本的自定义挂钩
- template_name
用于渲染此视图的模板的名称。默认情况下使用 flatblocks/edit.html。
- success_url
编辑 flatblock 成功后,视图将重定向用户到此处指定的 URL。默认情况下,视图将尝试确定进入编辑视图之前访问的最后一页(通常是使用 flatblock 的页面)并将用户重定向回那里。
- modelform_class
如果您想为 flatblocks 使用定制的 ModelForm 类,您可以在此指定它。
- permission_check
此参数允许您指定一个回调函数以执行一些 flatblock 特定的权限检查。这样的函数可能如下所示
def my_permcheck(request, flatblock): if request.user.is_staff or flatblock.slug == 'free_for_all': return True return HttpResponseRedirect('/')
设置了此权限回调后,除非是“免费forall”块,否则非工作人员用户不允许编辑此视图。如果不符合这些标准,用户将被重定向到页面的根 URL。
此处的合同相当简单。如果用户尝试编辑此链接时应收到403消息,则权限回调应返回False。如果函数返回HttpResponse实例,则视图将从假设您的视图已经完成了所有需要做的事情并返回该响应对象继续。任何其他返回值都告诉视图当前用户权限正常,应继续操作。
历史
由于此应用程序针对的是基本上适用于大多数Web项目的用例,因此有大量类似此解决方案的解决方案。实际上,此应用程序最初是从django-chunks分支而来,由Clint Ecker开发。
2008年11月,Kevin Fricovsky创建了原始分支,为了向每个块添加一个额外的“活动”标志。后来,Peter Baumgardner 分支了该项目,他将该标志再次删除,并添加了一个“标题”字段,以便直接将可选标题与每个文本块相关联。
此分支的目标是添加更多功能,如可变块,并集成H. Waara和S. Cranford在django-better-chunks分支中开发的某些功能(django.contrib.site和i18n支持)。
发布
- 1.0.0:
添加对Django 2.2、3.0和3.1的支持。
添加对Python 3.6、3.7、3.8和3.9的支持。
移除对Django 1.7、1.8、1.9、1.10和1.11的支持。
移除对Python 3.4和3.5的支持。
将CI移动到GitHub Actions:https://github.com/jazzband/django-flatblocks/actions
- 0.9.4:
停止支持Python 3.3。
添加对Django 1.11的支持。
- 0.9.3:
修复Django 1.10兼容性
- 0.9.2:
修复setup.py中读取README的问题
删除Django 1.4测试
使用flake8和isort整理代码
修复对Django 1.7+的支持
修复打包,排除测试模块
- 0.9.1:
删除对Django 1.5和1.6的测试
添加迁移[感谢Sergey Fedoseev]
- 0.9:
注意:主要标签语法更改!
现代化以使用simple_tag和标准关键字参数语法。
删除缓存 - 使用{% cache %}标签代替
- 0.8:
Python 3 & Django 1.6支持
- 0.7:
支持提供对上下文变量的访问的评估块
- 0.6:
South支持
安装和升级说明
注意:这是一个主要的过渡版本,以将South引入其中,并为此项目未来的数据库更改打开一些可能性。
- 0.5.1
Michael Fladischer删除了从管理员列表中渲染内容属性
Michael Fladischer提供PyBabel兼容性
修复了与memcache后端相关的缓存问题
- 0.5
Török Gábor提供匈牙利翻译
Bill Evans添加了演示编辑表单的方法(#5)
- 0.4
Mikhail Korobov提供FlatBlock自动创建功能(可以通过FLATBLOCKS_AUTOCREATE_STATIC_BLOCKS设置启用/禁用)
Mikhail Korobov提供各种修复
Henrik Heimbuerger修复了manifest的故障
- 0.3.5
Mikhail Korobov提供俄语翻译
- 0.3.4
Eivind Uggedal提供挪威语翻译
- 0.3.3
FlatBlock.save也应接受可选关键字参数。
- 0.3.2
所有设置现在都在flatblocks.settings模块中
- 0.3.1
修复FlatBlock.save()失败重置缓存的bug
为易于测试提供Buildout集成
示例urls.py和flatblocks/edit.html模板
- 0.3
createflatblock和deleteflatblock命令
在保存flatblock时,其缓存将被清除
现在,您也可以指定模板名称作为模板标签的最后一个参数。
- 0.2
可翻译
flatblocks.views.edit视图用于编辑flatblocks
- 0.1
初始版本