应用

Frappe 应用是一个使用 Frappe 框架的 Python 包。Frappe 应用位于
apps 目录下的 frappe-bench 目录中。

默认应用 frappe 是一个 Frappe 应用,它充当所有应用的基础框架。
每个 Frappe 应用都必须在 apps.txt 中有一个条目。

创建应用

Frappe 自带一个新应用的模板。要创建新应用,请在 frappe-bench 目录下
运行以下命令。

$ bench new-app custom_app
INFO:bench.app:creating new app custom_app
App Title (default: Custom App):
App Description: Custom Frappe App
App Publisher: John Doe
App Email: [email protected]
App Icon (default 'octicon octicon-file-directory'):
App Color (default 'grey'):
App License (default 'MIT'):
'custom_app' created at /Users/johndoe/frappe-bench/apps/custom_app
INFO:bench.app:installing custom_app
INFO:bench.utils:./env/bin/pip install -q -e ./apps/custom_app

现在,custom_app 目录将在 apps 目录中创建。它
也会被添加到 apps.txt 中。

目录结构

应用的目录结构大致如下:

apps/custom_app
├── MANIFEST.in
├── README.md
├── custom_app
│ ├── __init__.py
│ ├── config
│ │ ├── __init__.py
│ │ ├── desktop.py
│ │ └── docs.py
│ ├── custom_app
│ │ └── __init__.py
│ ├── hooks.py
│ ├── modules.txt
│ ├── patches.txt
│ ├── public
│ │ ├── css
│ │ └── js
│ ├── templates
│ │ ├── __init__.py
│ │ └── includes
│ └── www
├── license.txt
├── requirements.txt
├── dev-requirements.txt
├── package.json
└── setup.py

requirements.txt

此文件存储 Python 依赖项列表。安装此应用时,
其依赖项也会一并安装。

dev-requirements.txt [可选]

此文件存储 Python 开发依赖项列表。此文件的语法与
requirements.txt 相同。如果启用了开发者模式,那么
安装应用时也会安装其开发依赖项。

package.json

此文件用于跟踪 Node 依赖项。在此处了解更多信息。

customapp

这是存储源文件的目录。

customapp/customapp

当您创建新应用时,会在应用内部创建一个同名的模块。
此目录即对应于该模块。

customapp/hooks.py

此文件用于挂钩 Frappe 事件,并扩展或覆盖 Frappe 的
标准行为。

了解更多关于 hooks 的信息。

customapp/modules.txt

每个 Frappe 应用都组织为不同的模块。每个 DocType 都属于某个
模块。这些模块都列在此文件中。

了解更多关于模块的信息。

customapp/patches.txt

此文件用于存储数据库迁移过程中运行的补丁引用。
这些补丁按顺序运行,并且每个补丁只运行一次。

了解更多关于数据库迁移的信息。

customapp/public

public 文件夹是一个静态文件夹,在生产环境中可以由 nginx 提供服务。
放在这里的文件可以通过 URL /assets/custom_app/**/* 访问。

例如,文件 public/img/logo.png 可以通过 URL
/assets/custom_app/img/logo.png 访问。

此文件夹用于存储直接在客户端使用的静态资源,
如 JS、CSS 和图片。

customapp/templates

templates 文件夹用于编写和管理 Jinja 模板。您可以按照
任何方式组织它们。当您在 Jinja 模板中使用它们时,
此目录会被直接扫描。

例如,当您包含一个局部模板 {% include "templates/navbar/navbar.html" %} 时,
它会首先扫描此目录,然后回退到其他应用。

customapp/www

此目录中的文件直接映射到门户页面,URL 与
目录结构相匹配。

了解更多关于门户页面的信息。

将应用安装到站点

要使用应用,必须将其安装到站点上。将应用安装到站点意味着
将应用捆绑的模型创建到站点中,也就是说,
在站点数据库中创建数据库表。

要将应用安装到站点,请运行以下命令:

$ bench --site site_name install-app custom_app

Installing custom_app...

要检查应用是否安装正确,请运行以下命令:

$ bench --site site_name list-apps
frappe
custom_app