可编辑字段以添加内联模板

django-inlineedit的Python项目详细描述


django内联编辑

Django模型的内联编辑

安装

使用pip安装最新的稳定版本

`pip install django-inlineedit`

或者

在顶级克隆存储库中运行以下命令:

“轻松安装。”

最后,确保jquery加载在任何使用内联编辑的模板上。例如,在页眉添加以下内容:

^{pr2}$

快速启动

inlineedit添加到项目设置中的INSTALLED_APPS(请参见下面的依赖项)

path(<url for form submission>, include('inlineedit.urls'))添加到基url。Django inlineedit将使用您指定的任何URL,但请确保它不会与应用程序中的现有URL冲突!在

在模板中,使用以下内容加载模板标记:

{% load inlineedit %}

然后添加django inlineedit JS是一个合适的位置(例如在模板的底部<body>)。jQuery必须在之前加载

{% inlineedit_default_script %}

要向字段添加内联编辑,请使用inlineedit模板标记。例如:

{% inlineedit "my_object.my_field" %}

这将添加在对象my_object中编辑my_field所需的HTML和JS。无需进一步配置,当鼠标悬停在字段上时,标记将显示字段并显示编辑链接。单击一次将打开一个编辑元素和接受/拒绝按钮。单击前者接受任何更改,单击后者取消更改。在

外键可以按预期进行转换:

{% inlineedit "my_object.my_child_object.my_field" %}

访问控制

默认行为是对具有编辑特定模型字段的更改权限的用户。在

若要更改此行为,请将设置中的INLINEEDIT_EDIT_ACCESS设置为一个可调用函数,该函数以用户、模型实例和字段类为参数,并在允许编辑的情况下返回True。在

应用程序中还有两个附加选项。access.is_staff和{}分别只允许职员或超级用户编辑。前者还要求用户具有更改权限。最后,access.has_perm实现默认行为。示例:

INLINEEDIT_EDIT_ACCESS = inlineedit.access.is_staff

访问控制也可以在适配器级别实现,如下所述

自定义适配器

适配器协调django inlineedit如何解释各种字段和模板表单或小部件。用户可以定义自己的适配器来支持新类型的字段和小部件。在

Django inlineedit提供了三个自定义适配器:markdownckeditor和{}。这些显然支持降价输入和CKEditor所见即所得编辑器。后一个版本的CKEditor适配器支持使用CKEditor RichTextField模型字段的情况。前者用CKEditor版本覆盖小部件,并允许在模板标记中选择自定义工具栏

要创建新适配器,请创建一个从inlineedit.adaptors.basic.BasicAdaptor派生的类,并根据需要重新实现其方法。最常见的情况是您想要重写form_field和/或display_value。这些函数分别返回表单字段和可编辑字段的HTML表示。在

创建自定义适配器后,通过定义INLINEEDIT_ADAPTORS字典,在项目设置文件中注册它。例如:

INLINEEDIT_ADAPTORS = {
    "custom-adaptor": "main.adaptors.ExampleCustomAdaptor",
}

最后,通过它的INLINEEDIT_ADAPTORS键来引用新适配器。例如:

{% inlineedit "my_object.my_custom_field" "custom-adaptor" %}

额外的参数

inlineedit模板标记可以处理某些额外的参数

ParameterOptionsDescription
template'inlineedit/default.html' (the default), 'inlineedit/fixed.html' or any other template of your choiceChose template used to render inlineedit links and forms

任何其他位置参数或命名参数都会传递给适配器构造函数。在

自定义适配器中的访问控制

您也可以通过重写has_edit_perm(user)来控制对适配器级别编辑的访问。例如,下面将允许任何人编辑使用ExampleCustomAdaptor的特定字段:

class ExampleCustomAdaptor:
    def has_edit_perm(user):
        return True

依赖项:

需要安装jquery 3.3.1或更高版本。在

支持与其他库集成(可选)

  1. django反转

    不需要配置,django inlineedit将只使用django reversion只要 作为你的模特装饰着@复归登记()

  2. Django CKEditor公司

    cEditor适配器需要5.9.0或更高版本才能工作。例如:

     {% inlineedit "my_object.my_field" "ckeditor" %}
    

    或者

     {% inlineedit "my_object.my_field" "ckeditor" "toolbar" %}
    
  3. 降价

    Python库标记是适配器工作所必需的

     {% inlineedit "my_object.my_field" "markdown" %}
    

运行示例

  1. cd到要运行的示例的根目录中(在examples文件夹下)
  2. 运行python3 manage.py migrate以设置本地sqlite3数据库。在
  3. 运行python3 manage.py runserver为示例启动一个本地开发服务器。在

开源许可证

此产品依赖于以下软件和媒体包

引导程序版本4.0是在MIT License下授权的

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
将Java中的对象列表序列化为json   在同一Play Framework项目中同时使用Ebean和JPA的java   oop如何在整个Java项目中共享API密钥   java ADT Eclipse SDK故障未找到DDM   扫描程序中变量的递归Java输入值未应用于方法中的变量   java将空格转换为命令行类型的空格   JavaSpring,如何决定客户机应该使用哪个服务?   java致命异常:main(Android标准)   java编译错误是因为类型检查还是三元运算符?   java Sikuli+Webdriver:getting error x.png看起来像一个文件,但在磁盘上找不到。假设是文本   java选择位置。。。。ms sql 2005中需要电气状态   由于OSGi捆绑包依赖性问题,java无法启动RCP应用程序   json java gson fromjson返回非泛型的null   如何将google api访问令牌从java服务器传递到gapi javascript客户端?   java在已排序的LinkedList中添加元素   java ForkJoinPool为什么程序抛出OutOfMemoryError?   java SQUARE无法解析为Processing/Eclipse中的变量   java如何为Sun App Server 8.2设置JNDI