Django网站的扩展性、分层和可插拔导航系统
项目描述
一个适用于Django网站的扩展性、分层和可插拔导航系统。
django-treenav 从一开始就被设计成可以独立于 CMS 实现存在。作为一个独立的应用程序,treenav 可以轻松集成到现有的自定义设置中,并且不强制或要求用户使用特定的内容管理系统。
遵循相同的原理,django-pagelets 与 treenav 无缝集成,可以一起使用以创建灵活的 CMS 产品。
要查看完整文档,请访问 http://django-treenav.readthedocs.org
功能
具有多个 URL 规范的通用功能:get_absolute_url()、reverse() 或原始 URL
包含模板以渲染嵌套 <ul> 的树层次结构,但可以轻松用自定义模板覆盖
可以轻松自定义每个项目的模板或回退到默认的 menuitem.html
有用的 CSS 类,可灵活自定义 UI
如果 PATH_INFO 等于 item.href,则自动将“活动”状态设置为项目及其父项目
高效:通过 django-mptt 功能最小化数据库访问
缓存树,以便重复的页面视图不会击中数据库。
在 MenuItem 列表视图中提供简单的链接,用于刷新缓存和从数据库中的 href。
要求
django >= 2.2
django-mptt >= 0.11.0
使用演示
要进行快速演示,请按照以下步骤操作
创建一个 virtualenv。 (此示例使用 mkvirtualenv,但还有许多其他方法可以做到这一点)
$ mkvirtualenv django-treenav
检出代码并安装要求
(django-treenav)$ git clone git://github.com/caktus/django-treenav.git (django-treenav)$ cd django-treenav/ (django-treenav)~/django-treenav/$ pip install -Ur dev-requirements.txt
运行迁移并创建一个超级用户,以便您可以登录到 Django 管理员
(django-treenav)~/django-treenav$ python manage.py migrate (django-treenav)~/django-treenav$ python manage.py createsuperuser
运行服务器
(django-treenav)~/django-treenav$ python manage.py runserver
在浏览器中访问 http://localhost:8000/,并遵循说明。
安装
使用 pip 安装应用程序
pip install django-treenav
将其添加到您的 INSTALLED_APPS 并运行迁移
INSTALLED_APPS = ( ..., 'mptt', 'treenav', )
包括这些上下文处理器
TEMPLATES = [ { 'OPTIONS': { 'context_processors': [ "django.template.context_processors.request", "treenav.context_processors.treenav_active", ], }, }, ]
添加这些 URL
urlpatterns = [ url(r'^treenav/', include('treenav.urls')), ]
维护者信息
我们使用 Github Actions 来 lint(使用 pre-commit、black、isort 和 flake8)、测试(使用 tox 和 tox-gh-actions)、计算覆盖率(使用 coverage)以及构建文档(使用 sphinx)。
我们有一个本地脚本来执行这些操作,命名为 maintain.sh
$ ./maintain.sh
Github Action 工作流程还会在 Github 中创建新的发布时构建并推送新的软件包到 PyPI。这使用特定于项目的 PyPI 令牌,如 PyPI 文档中所述。该令牌已保存在此存储库的 PYPI_PASSWORD 设置中,但未在其他地方保存。因此,如果出于任何原因需要它,则应删除当前的令牌并生成新的令牌。
始终记得在创建发布之前在 treenav/__init__.py 中增加版本号,以便将正确的版本推送到 PyPI。
开发由 Caktus 咨询集团,LLC 赞助。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。