# 应用程序
Frappe应用程序是一个使用Frappe框架的Python包。Frappe应用程序位于frappe-bench目录中名为apps的目录中。
默认应用程序frappe是作为所有应用程序的框架的Frappe应用程序。Frappe应用程序应该在apps.txt中有条目。
# 创建应用程序
Frappe提供了新应用程序的样板。要创建新应用程序,请从frappe-bench目录运行以下命令。
$ bench new-app custom_app
INFO:bench.app:正在创建新应用程序 custom_app
应用程序标题(默认:Custom App):
应用程序描述:自定义Frappe应用程序
应用程序发布者:John Doe
应用程序电子邮件:custom@johndoe.com
应用程序图标(默认 'octicon octicon-file-directory'):
应用程序颜色(默认 'grey'):
应用程序许可证(默认 'MIT'):
在 /Users/johndoe/frappe-bench/apps/custom_app 创建了 'custom_app'
INFO:bench.app:正在安装 custom_app
INFO:bench.utils:./env/bin/pip install -q -e ./apps/custom_app
2
3
4
5
6
7
8
9
10
11
12
13
现在将在apps目录中创建custom_app目录。它也会被添加到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
├── custom_app.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ ├── not-zip-safe
│ ├── requires.txt
│ └── top_level.txt
├── license.txt
├── requirements.txt
├── dev-requirements.txt
├── package.json
└── setup.py
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# requirements.txt
此文件存储Python依赖项列表。当安装此应用程序时,其依赖项也将被安装。
# dev-requirements.txt [可选]
此文件存储Python开发依赖项列表。此文件的语法与requirements.txt相同。如果启用了开发模式,那么安装应用程序还将安装其开发依赖项。
# package.json
此文件用于跟踪node依赖项。了解更多信息。
# custom_app
这是存储源文件的目录。
# custom_app/custom_app
创建新应用程序时,应用程序内也会创建一个同名的模块。这是对应于该模块的目录。
# custom_app/hooks.py
此文件用于钩住Frappe事件,并通过Frappe扩展或覆盖标准行为。
了解更多关于钩子的信息。
# custom_app/modules.txt
每个Frappe应用程序都被组织成不同的模块。每个DocType都是一个模块的一部分。这些模块在此文件中列出。
了解更多关于模块的信息。
# custom_app/patches.txt
此文件用于存储数据库迁移中运行的补丁的引用。这些补丁按顺序运行,并且只运行一次。
了解更多关于数据库迁移的信息。
# custom_app/public
public文件夹是一个静态文件夹,可以在生产中由nginx提供。这里放置的文件可以通过URL /assets/custom_app/**/* 访问。
例如,文件public/img/logo.png可以通过URL /assets/custom_app/img/logo.png 访问。
此文件夹用于存储在客户端直接使用的静态资产,如JS、CSS和图片。
# custom_app/templates
templates文件夹用于编写和管理Jinja模板。它们可以以任何您想要的方式组织。当您在Jinja模板中使用它们时,此目录将被直接扫描。
例如,当您包含一个部分 {% include "templates/navbar/navbar.html" %},它将首先扫描此目录,然后回退到其他应用程序。
# custom_app/www
此目录中的文件直接映射到门户页面,URL与目录结构匹配。
了解更多关于门户页面的信息。
# 在网站中安装应用程序
要使用应用程序,必须将其安装在网站上。在网站上安装应用程序意味着将应用程序捆绑的模型创建到网站中,这意味着在网站数据库中创建数据库表。
要将应用程序安装到网站上,请运行以下命令:
$ bench --site site_name install-app custom_app
正在安装 custom_app...
2
3
4
要检查应用程序是否已正确安装,请运行以下命令:
$ bench --site site_name list-apps
frappe
custom_app
2
3
4