Frappe中Python的API

  • 服务器API
    • 从服务器发布事件:frappe.publish_realtime()
    • 对话框显示进度条:frappe.publish_progress()
  • 后台运行线程方法
    • frappe.enqueue()
      • 可传参数有methond、queue='default'、timeout=None、is_async=True、now=False、job_name=None、enqueue_after_commit=False、at_front=False
    • frappe.enqueue_doc()
      • 可传参数有doctype、name、'do_something'、queue='long'、timeout=4000、param='value'
      • 注:queue有个参数值short、default、long,分别是300秒、300秒、1500秒
  • 文档API
    • Document 是 DocType 的一个实例。它派生自类,表示数据库表中的单个记录。frappe.model.Document
    • frappe.get_doc(doctype, name)
      • 返回 Document 对象。
    • frappe.get_last_doc(doctype, filters, order_by)
      • 可以根据筛选条件获取Documennt对象。
    • frappe.get_cached_doc()
      • 从缓存中查找Document对象。
    • frappe.new_doc(doctype)
      • 创建新的Docunment对象。
    • frappe.delete_doc(doctype, name)
      • 从数据库中删除记录及其子项。
    • frappe.rename_doc(doctype, old_name, new_name, merge=False)
      • 将文档的(主键)从 重命名为 。
    • frappe.get_meta(doctype)
      • 返获取文档的元信息 。
  • 文档方法
    • Document对象封装的方法
    • doc.insert()
      • 执行插入语句,将新文档插入数据库表中。(before_insert validate on_update after_insert)
    • doc.save()
      • 执行更改语句,对现有文档的更改。(validate on_update)
    • doc.delete()
      • 执行删除语句,从数据库中删除文档记录。(frappe.delete_doc)
    • doc.get_doc_before_save()
      • 返回更改之前的文档版本。
    • doc.has_value_changed('属性参数')
      • 返回布尔值,可以判断参数在保存前和保存后是被修改,如果被修改则返回True。
    • doc.reload()
      • 刷新文档,从数据库获取数据。
    • doc.check_permission(permtype='write')
      • 如果当前用户没有指定的权限,则抛出异常。
    • doc.get_title()
      • 获取文档标题(title_field)
    • doc.notify_update()
      • 更新客户端表单。
    • doc.db_set('key','value')
      • 直接修改数据库字段内容,并且更新修改后的时间戳,第三参数设置update_modified=False修改后将不跟新时间戳,notify=True,修改后执行更新方法doc.notify_update(),commit=True修改后执行把偶才能方法frappe.db.commit()
    • doc.append()
      • 追加新项到子表。
    • doc.get_url()
      • 获取当前文档URL链接。
    • doc.add_comment()
      • 在当前文档单据的时间轴中添加注释。
    • doc.add_seen()
      • 将用户添加到已查看当前文档的用户列表中,更新用户列表中的列,用JSON数组存储,Doc Type中开启了Track Seen时才会生效。
    • doc.add_viewed()
      • 当前文档被查看时,将查看文档的用户添加到查看日志中,DocType中开启了Track Views时才会生效。
    • doc.add_tag()
      • 为当前文档添加标签,标签可用于筛选和分组。
    • doc.run_method()
      • Run方法。
    • doc.queue_action()
      • 后台运行控制器方法。
    • doc.get_children()
      • 获取子对象,仅在树 DocTypes (inherited from ) 上可用。NestedSet
    • doc.get_parent()
      • 获取父对象,仅在树 DocTypes (inherited from ) 上可用。NestedSet
    • doc.db_insert()
      • 直接将文档序列化并且插入数据库。
    • doc.db_update()
      • 直接将文档序列化并且更新到数据库。
  • 数据库API
    • frappe.db.get_list(doctype, filters, or_filters, fields, order_by, group_by, start, page_length)
      • 返回表中的记录列表doctype。
    • frappe.db.get_all(doctype, filters, or_filters, fields, order_by, group_by, start, page_length)
      • 与frappe.db.get_list()相同,但不需要权限获取数据。
    • frappe.db.get_value(doctype, filters, fieldname)
      • 获取文档的字段值或列表组织。
    • frappe.db.get_single_value(doctype, fieldname)
      • 获取DocType字段。
    • frappe.db.set_value(doctype, name, fieldname, value)
      • 设置数据库中的字段的值,不会调用触发器,但会更新时间戳。
    • frappe.db.exists(doctype, name)
      • 返回布尔类型,判断文档是否存在。
    • frappe.db.count(doctype, filters)
      • 查询单据的记录数。
    • frappe.db.delete(doctype, filters)
      • 删除符合条件的doctype,执行DML命令,可以回滚,如果没有指定条件,将会删除文档的所有记录。
    • frappe.db.truncate(doctype)
      • 截断数据库中的表,执行DDL命令,在执行语句前会触发提交,无法回滚,可以用来定期清除日至表。
    • frappe.db.commit()
      • 提交当前事务。
      • frappe.db.savepoint(save_point)
        • 创建一个命名保存点,可以回滚到该保存点。
      • frappe.db.rollback(save_point="save_point_name")
        • 回滚到特保存点,而不是回滚完整事务。
      • frappe.db.sql(query, values, as_dict)
        • 执行任意SQL查询。
      • frappe.db.multisql({'mariadb': mariadb_query, 'postgres': postgres_query})
        • 对任何支持的数据库引擎执行合适的SQL语句。
      • frappe.db.rename_table(old_name, new_name)
        • 更改指定DocType或内部表的名称即可重命名表。
      • frappe.db.describe(doctype)
        • 返回指定的DocType的表描述元组。
      • frappe.db.change_column_type(doctype, column, new_type)
        • 更改指定的DocType的列类型。
      • frappe.db.add_index(doctype, fields, index_name)
        • 为指定字段的文档类型创建索引。
      • frappe.db.add_unique(doctype, fields, constraint_name=None)
        • 为指定字段的文档类型创建唯一约束。
      • 数据库事务钩子
        • Frappe提供了用与在发出事务命令(提交和回滚)之前和之后运行回调的钩子。这些钩子适用于:事务回滚、事务提交
          • 事务回滚时触发的钩子
            • frappe.db.before_rollback.add(fun:Callable)
            • frappe.db.after_rollback.add(fun:Callable)
          • 事务提交时触发的钩子
            • frappe.db.before_commit.add(fun: Callable)
            • frappe.db.before_commit.add(fun:Callable)
  • JinjaAPI
    • Frappe提供的在Jinja模板的白名单方法,也就是在前端模板中可以调用的方法
    • frappe.format(value, df, doc)
      • 将值格式化为用户看得懂的格式。
    • frappe.format_date(date_string)
      • 将日期格式转换为长格式。
    • frappe.get_url()
      • 获取网站URL。
    • frappe.get_doc(doctype, name)
      • 根据名称获取文档。
    • frappe.get_all(doctype, filters, fields, order_by, start, page_length, pluck)
      • 获取文档的所有记录的列表。
    • frappe.get_list(doctype, filters, fields, order_by, start, page_length)
      • 与frappe.get_all()类似,但会根据权限过滤当前会话的用户记录。
    • frappe.db.get_value(doctype, name, fieldname)
      • 获取文档的字段值或列表值。
    • frappe.db.get_single_value(doctype, fieldname)
      • 获取DocType的值。
    • frappe.get_system_settings(fieldname)
      • 获取系统字段值。
    • frappe.get_meta(doctype)
      • 获取文档元数据。
    • frappe.get_fullname(user_email)
      • 获取用户的电子邮件全名,如果为空,则返回当前用户的电子邮件全名。
    • frappe.render_template(template_name, context)
      • 使用上下文渲染jinja模板字符串或文件。
    • frappe._(string) 或 _(string)
    • frappe.session.user()
      • 获取当前用户
    • frappe.session.csrf_token()
      • 获取当前的CSRF令牌
    • frappe.form_dict()
      • 如果在 Web 请求中评估模板,frappe.form_dict则是查询参数的字典,否则就是None。
    • frappe.lang()
      • 翻译当前使用的语言。
  • 实用工具API
    • Frappe 框架带有各种实用函数来处理管理站点特定的 DateTime 管理、日期和货币格式、PDF 生成等的常见操作。工具方法需要导入才能使用。
    • now()
      • 获取yyyy-mm-dd hh:mm:ss格式的当前日期时间。
    • getdata(string_date=None)
      • 将yyyy-mm-dd格式的字符串类型日期转为对象,参数为空则返回当前日期。
    • today()
      • 获取yyyy-mm-dd格式的当前日期。
    • add_to_date(date, years=0, months=0, weeks=0, days=0, hours=0, minutes=0, seconds=0, as_string=False, as_datetime=False)
      • 添加到日期,用来计算日期时间,例如在特定日期中增加或减去一定的天数。
    • date_diff(date_2, date_1)
      • 获取两个日期之间的差值,两个日期之间差的天数。
    • days_diff(data_2,data_1)
      • 获取两个日期之间天数的差。
    • month_diff(date_2,date_1)
      • 获取两个月之间的月差。
    • pretty_date(iso_datetime)
      • 获取多久以前的字符串的ISO时间,即使通讯等通讯应用中非常常见。
    • format_duration(seconds, hide_days=False)
      • 将时间值转换为时间格式。
    • comma_and(some_list, add_quotes=True)
      • 将列表或元组中的内容拼接成字符串。
    • money_in_words(number, main_currency=None, fraction_currency=None)
      • 获取将数字转为带货币符号的字符串。
    • validate_json_string(string)
      • 验证JSON格式是否正确。
    • random_string(length)
      • 获取指定长度的随机字符串。
    • unique(seq)
      • 将指定序列中重复的元素去除,保留顺序。
    • get_pdf(html, options=None, output=None)
      • 使用pdfkit和pyPDF2模块从HTML生成PDF文件。
    • get_abbr(string,max_len=2)
      • 获取指定内容的首字母。
    • validate_url(txt, throw=False, valid_schemes=None)
      • 返回布尔类型,判断URL是否有效。
    • validate_email_address(email_str,throw=False)
      • 返回传入字符串中得有效邮箱字符串。
    • validate_phone_number(phone_number, throw=False)
      • 返回布尔类型,有效电话号码则返回True。
    • frappe.cache()
      • 链接Redis,它继承了redis得实例,可以对redis进行存储和检索。
    • frappe.sendmail(recipients=[], sender="", subject="No Subject", message="No Message", as_markdown=False, template=None, args=None, **kwargs)
      • 发送电子邮件。
      • attachments参数可以将附件通过邮件发送。
    • filelock()
      • 文件锁,在同步进程中使用可以避免竞争条件。
  • 对话弹窗API
    • Frappe 提供了一组标准、交互且灵活的对话框,易于配置和使用。
    • frappe.msgprint(msg, title, raise_exception, as_table, as_list, indicator, primary_action, is_minimizable, wide, realtime)
      • 向发起请求的用户显示一条消息。
      • 参数列表包括:
        • msg:要显示的消息
        • title:模式标题
        • as_table:如果msg是列表列表,则呈现为 HTML 表格
        • as_list:如果msg是列表,则呈现为 HTML 无序列表
        • primary_action:绑定主服务器/客户端操作。
        • raise_exception: 例外
        • is_wide:显示宽模式
        • is_minimizable:允许用户最小化模式
        • realtime:立即使用 websocket 发布,而不是添加到响应消息日志
    • frappe.throw(msg, exc, title, is_minimizable, wied, as_list, primary_action)
      • 将异常抛出显示给发起请求的用户,本质上是frappe.msgprint()。
  • 查询生成器API
    • frappe.qb是一个围绕 PyPika 编写的查询生成器,用于构建跨数据库查询的单一界面在开发应用程序时,您经常需要从数据库中检索一些特定数据。
    • frappe.db
      • 返回一个 Pypika 查询对象,该对象允许您构建查询。
      • frappe.qb.from_(doctype)
        • 允许您构建查询以选择数据
      • frappe.qb.Doctype(TableName)
        • 返回一个可以在其他地方使用的 PyPika 表对象。
      • frappe.qb.Table(TableName)
        • 与frappe.qb.Doctype()相同,与'__Auth'之类的表格一起使用
      • frappe.qb.Field(ColoumName)
        • 返回一个 PyPika 字段对象,它代表一列。
    • 执行查询
      • walk()
        • 通过构建的所有查询都frappe.qb默认参数化。
      • run()
        • 这是执行查询的最佳方法。
      • frappe.db.sql()
        • 直接将查询对象传递给frappe.db.sql(),这会忽略查询的权限和参数化。
    • frappe.query_builder.functions
      • 此模块提供构建查询时可能需要的标准函数。
  •  
Frappe中Python的API
罗贤龙 2024年11月28日
分析这篇文章

存档
登录 留下评论
FrappeExcel导出模版使用说明