python的crud库

django-beam的Python项目详细描述


CircleCIReadTheDocs

django梁

Django Beam为您提供了一组视图、模板和最常见CRUD的集成 应用。

目标是拥有Django自己的管理员提供的功能,但要与其他前端代码集成。

该项目仍处于早期开发阶段。

大多数核心概念已经稳定下来,并正在生产中使用。然而 仍在继续进行更改

功能

  • 基于类视图的crud操作
  • 易于扩展
  • 常见用例和流行的第三方软件包的扩展

文档

应该在https://django-beam.readthedocs.io/en/latest/

示例

    # people/models.py
    class Group(models.Model):
        name = models.TextField()


    class Person(models.Model):
        name = models.TextField()
        email = models.EmailField()

        groups = models.ManyToManyField(Group)


    # people/views.py
    import beam

    class PersonViewSet(beam.ViewSet):
        fields = ['name', 'groups']


    class GroupViewSet(beam.ViewSet):
        fields = ['name']


    # urls.py
    urlpatterns += [
        path('person/', include(PersonViewSet().get_urls())),
        path('group/', include(GroupViewSet().get_urls())),
    ]


    # settings.py
    INSTALLED_APPS += [
        "beam",
        "beam.themes.bootstrap4",  # or choose any theme you like
    ]

核心概念

除了标准django之外,还有一些部分需要理解才能使用beams。 第一个是viewsets。它们用于对单个模型的多个视图进行分组和配置(类似于 django-rest-framework)。指定例如fields = ["name", "age"]将把这些字段传递给指定模型的所有视图。它们还允许您通过设置例如update_fields = ["name"]来指定和重写单个视图的配置。更新视图将仅限于名称。

下一个概念是组件。组件用于分组和传递相关属性 将视图集设置为各个视图。视图只传递其组件所期望的数据 __init__

视图集指出哪些属性应该传递给组件,并且还考虑了 具体的。如果同时指定fieldsdetail_fields,则detail组件将收到 后者,而所有其他组件将通过前者。

使用自定义组件

的示例

下面是添加自定义视图的示例

class CustomerCallView(beam.views.ComponentMixin, MyBaseView):
    phone = None
    # your custom view code goes here ...

class CustomerViewSet(beam.ViewSet):
    model = Customer
    fields = ["first_name", "last_name", "email", "phone"]

    call_component = Component
    call_url = "call/{phone}/"
    call_url_kwargs = ["phone"]

布局

表单布局

梁布局是提供窗体和详细视图的简单方法 一些结构没有使用自定义模板。 通过在视图集中指定三重嵌套列表,可以将字段分组到 行和列。默认主题最多支持每行4列。

layout = [
    [ # first row
        ["name", "age",],   # first column
        ["phone", "email",],   # second column
    ]
    [ # second row
        ["a", "b",],   # first column
        ["c", "d",],   # second column
    ]
]

固定图像

链接布局

beam在所有页面的顶部都显示到视图集中其他视图的链接 以及列表页中项目旁边。 为了指定哪些链接应该在详细信息页的顶部可见, 例如,可以指定detail_links = ["update", "...", "delete", "!create"]。 这将导致create被隐藏,第一个链接指向update视图,最后一个链接指向 delete视图和所有其他组件将显示在这两者之间。

如果您希望创建视图是列表视图顶部显示的唯一视图,请设置 list_links = ["create"]。要指定列表项旁边显示的链接,请设置list_item_links

内联线

class ContactDataInline(beam.RelatedInline):
    fields = ["medium", "value"]
    fk_field_name = 'person'


class PersonViewSet(beam.ViewSet):
    create_inline_viewset_classes = []
    inline_viewset_classes = [ContactDataInline]

主题

我们目前只发布一个主题。

  • beam.themes.bootstrap4 使用默认的引导v4标记并包含一个基本的引导css文件。

    为了使用bootstrap4主题,必须安装可选的依赖项 django-crispy-forms并将其添加到设置中的INSTALLED_APPS中。py:

    INSTALLED_APPS = (..., 'crispy_forms')
    

光束控制

我们包括一个beam.contrib包,它提供了与几个第三方django应用程序的集成。

光束贡献反转

提供与django-reversion集成的基本视图集。

用法

首先将reversionbeam.contrib.reversion添加到已安装的应用程序中。 使用beam.contrib.reversion.VersionViewSet作为 需要反转或使用VersionViewSetMixin的模型。

默认情况下,将跟踪创建和更新视图。您可以使用versioned_component_names 类属性来控制跟踪哪些组件。

如果您没有手动注册带有reversion的模型,那么VersionViewSet.model将被注册 遵循为versioned_component_names指定的所有内联线。

光束自动完成

提供了一个用于与^ {CD22>}集成的视图集MIXIN。 它也P提供一些与引导程序兼容的css来覆盖django自动完成灯光默认值。使用那些 您必须在django-autocomplete-light之前将beam.contrib.autocomplete_light添加到已安装的应用程序

用法

将MIXIN添加到视图集,然后按项目文档使用^ {CD22>},用于 重写小部件指令的示例。

# settings.pyINSTALLED_APPS=["dal","beam.contrib.autocomplete_light","dal_select2",...]# views.pyimportbeamfrombeam.contrib.autocomplete_lightimportAutocompleteMixinclassGroupViewSet(AutocompleteMixin,beam.ViewSet):fields=['name']autocomplete_search_fields=["name"]# forms.pyfromdjangoimportformsfrompeople.modelsimportPersonfromdal_select2.widgetsimportModelSelect2MultipleclassPersonForm(forms.ModelForm):classMeta:model=Personfields=["name","email","groups"]widgets={"groups":ModelSelect2Multiple(url="people_group_autocomplete"),}

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

推荐PyPI第三方库


热门话题
java ModelRenderable具有多个子图,仅显示一个子图   java如何通过引用从Firebase获取一个对象数据   java GraphQL SPQR扩展输入对象的参数   多线程java并发、生产者(代理)和消费者   这个黑客试图用这个Java代码做什么?   java共享库编译,但有未定义的符号   java对基元类型使用常量或枚举   serversocket 安卓/ios聊天应用服务器端java实现   javajavax。摆动计时器和jpanel可见性   javacom。太阳邮政smtp。SMTPAddressFailedException:收件人地址被拒绝:需要身份验证   java是使用Hibernate处理数据库中多对一关系中实体并发创建的最佳方法   仅导入服务时的java customsql(Liferay)   java迫使Storm使用胖jar依赖项,而不是类路径定义的依赖项   关于返回参数的oracle java mapper ibatis错误   java Netbeans scala插件无文档   java Eclipse RCP应用程序在长时间不活动后崩溃,为什么?   java Fire base错误安卓   java在2D数组中查找节点位置   使用Jbox2d(java)中的图像