fragment: Key1 = {{key1}} - Key2 = {{key2}}"
```
例子:
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode25.py)。
* `@templateArgs`: 允许在 Jinja2 模板中使用任何局部变量的注解。 请注意,不能将`@templateArgs`与`@captureOutput`结合使用:
参数:无
例子:
```py
from pixiedust.display.app import *
@PixieApp
class MyApp():
@route(key1="value1", key2="*")
@templateArgs
def myroute_screen(self, key1, key2):
local_var = "some value"
return "
fragment: local_var = {{local_var}}"
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/T4houghtful-Data-Science/blob/master/chapter%205/sampleCode26.py)。
* `@captureOutput`: 可以使用路由方法更改合同的注解,这样就不必再返回 HTML 片段。 相反,方法主体可以像在笔记本单元中那样简单地输出结果。 该框架将捕获输出并将其作为 HTML 返回。 请注意,在这种情况下,您不能使用 Jinja2 模板。
参数:无
例子:
```py
from pixiedust.display.app import *
import matplotlib.pyplot as plt
@PixieApp
class MyApp():
@route()
@captureOutput
def main_screen(self):
plt.plot([1,2,3,4])
plt.show()
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode27.py)。
* `@Logger`: 通过向类中添加日志记录方法来添加日志记录函数:`debug`, `warn`, `info`, `error`, `critical`, `exception`。
参数:无
例子:
```py
from pixiedust.display.app import *
from pixiedust.utils import Logger
@PixieApp
@Logger()
class MyApp():
@route()
def main_screen(self):
self.debug("In main_screen")
return "
Hello World
"
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode28.py)。
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode28.py)。
# 自定义 HTML 属性
这些可以与任何常规 HTML 元素一起使用以配置内核请求。 当元素接收到点击或更改事件时,或者在 HTML 片段完成加载后,PixieApp 框架可以触发这些请求。
* `pd_options`: 根据以下格式定义用于内核请求的瞬时状态的键值对列表:`pd_options="key1=value1;key2=value2;..."`。 当与`pd_entity`属性结合使用时,`pd_options`属性将调用 PixieDust `display()`API。 在这种情况下,您可以从使用`display()` API 的单独笔记本单元的元数据中获取值。 当在`display()`模式下使用`pd_options`时,为方便起见,建议通过创建名为`
`的子元素并使用 JSON 值作为文本来使用`pd_options`的 JSON 表示法。
以`pd_options`作为子元素调用`display()`的示例:
```py
{
"mapboxtoken": "XXXXX",
"chartsize": "90",
"aggregation": "SUM",
"rowCount": "500",
"handlerId": "mapView",
"rendererId": "mapbox",
"valueFields": "IncidntNum",
"keyFields": "X,Y",
"basemap": "light-v9"
}
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode29.html)。
以`pd_options`作为 HTML 属性的示例:
```py
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode30.html)。
* `pd_entity`:仅用于在特定数据上调用`display()` API。 必须与`pd_options`结合使用,其中键值对将用作`display()`的参数。 如果未为`pd_entity`属性指定任何值,则假定该实体为传递给启动 PixieApp 的`run`方法的实体。 `pd_entity`值可以是在笔记本中定义的变量或 PixieApp 的字段(例如`pd_entity="df"`),也可以是使用点表示法的对象的字段(例如`pd_entity="obj_instance.df"`)。
* `pd_target`: 默认情况下,内核请求的输出会注入到整个输出单元格或对话框中(如果您使用`runInDialog = "true"`作为`run`方法的参数)。 但是,您可以使用`pd_target = "elementId"`指定将接收输出的目标元素。 (请注意,`elementId`必须存在于当前视图中。)
例子:
```py
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode31.html)。
* `pd_script`: 这将调用任意 Python 代码作为内核请求的一部分。 可以与其他属性(例如`pd_entity`和`pd_options`)结合使用。 请务必注意,必须遵守 [Python 缩进规则](https://docs.python.org/2.0/ref/indentation.html)以避免运行时错误。
如果 Python 代码包含多行,建议使用`pd_script`作为子元素并将代码存储为文本。
例子:
```py
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode32.html)。
* `pd_app`: 这将通过其完全限定的类名称动态调用一个单独的 PixieApp。 `pd_options`属性可用于传递路由参数以调用 PixieApp 的特定路由。
例子:
```py
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode33.html)。
* `pd_render_onload`: 与用户单击元素或发生更改事件时相反,这应用于在加载时触发内核请求。 `pd_render_onload`属性可以与定义请求的任何其他属性组合,例如`pd_options`或`pd_script`。 请注意,此属性仅应与`div`元素一起使用。
例子:
```py
print('hello world rendered on load')
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode34.html)。
* `pd_refresh`: 即使没有事件(单击或更改事件)发生,它也用于强制 HTML 元素执行内核请求。 如果未指定任何值,则刷新当前元素,否则,将刷新具有在值中指定的 ID 的元素。
例子:
```py
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode35.html)。
* `pd_event_payload`: 这将发出具有指定有效内容的 PixieApp 事件。 该属性遵循与`pd_options`相同的规则:
* 每个键值对必须使用`key=value`表示法进行编码
* 该事件将在点击或更改时触发
* 支持`$val()`指令以动态注入用户输入的输入
* 使用``子项输入原始 JSON。
```py
```
例子:
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode36.html)。
* `pd_event_handler`: 订阅者可以通过声明一个``子元素来监听事件,该子元素可以接受任何 PixieApp 内核执行属性,例如`pd_options`和`pd_script`。 这个元素必须使用`pd_source`属性来过滤他们想要处理的事件。 `pd_source`属性可以包含以下值之一:
* `targetDivId`:仅接受来自具有指定 ID 的元素的事件
* `type`:仅接受指定类型的事件。
```py
Listening to button event
```
例子:
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode37.html)。
**注意**:将`pd_source`用作`*`表示将接受所有事件。
* `pd_refresh_rate`: 这用于以毫秒为单位的指定间隔重复执行元素。 当您要轮询特定变量的状态并在 UI 中显示结果时,这很有用。
例子:
```py
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode38.html)。
# 方法
* `setup`: 这是由 PixieApp 实现的用于初始化其状态的可选方法。 在 PixieApp 运行之前将被自动调用。
参数:无
例子:
```py
def setup(self):
self.var1 = "some initial value"
self.pandas_dataframe = pandas.DataFrame(data)
```
### 注意
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%205/sampleCode39.py)。
* `run`: 这将启动 PixieApp。
参数:
* **实体**:(可选)数据集作为输入传递到 PixieApp。 可以用`pd_entity`属性引用,也可以直接作为`pixieapp_entity`字段引用。
* `**kwargs`:运行时传递给 PixieApp 的关键字参数。 例如,使用`runInDialog="true"`将在对话框中启动 PixieApp。
```py
app = MyPixieApp()
app.run(runInDialog="true")
```
例子:
* `invoke_route`: 这用于以编程方式调用路由。
参数:
* **路由方法**:要调用的方法。
* `**kwargs`:要传递给`route`方法的关键字参数。
```py
app.invoke_route(app.route_method, arg1 = "value1", arg2 = "value2")
```
例子:
* `getPixieAppEntity`:用于检索调用`run()`方法时传递的当前 PixieApp 实体(可以为`None`)。 通常从 PixieApp 内部调用`getPixieAppEntity()`,即:
```py
self.getPixieAppEntity()
```