django的引导crud模板库。

django-bootstrap-crud-templates的Python项目详细描述


django将开发人员从使用 基于类的视图;bootstrap,设计美观css+html的劳动 组件。

django bootstrap crud模板旨在将两者结合起来,允许开发人员 只需编写简单的基于类的视图,然后选择或扩展引导 模型的完整积垢暴露模板。

开发人员甚至可以只定义一个模型,包括一个MIXIN和 运行函数为该模型生成一组工作的crud url(请参见 自动生成视图和url)。

Demo

安装

  1. pip install django-bootstrap-crud-templates
  2. 在项目设置模块的INSTALLED_APPS列表中添加'bsct'

用法

django bootstrap crud模板提供了一个集成了bootstrap的存储库 Django模板。

这些模板被设计成直接处理上下文变量 由基于django类的视图提供,属性由 Django模型。

型号要求

为了充分利用这些特性,模型应该有几个 定义的属性:

  • 实例方法:
    • get_absolute_url:返回用于查看实例的url。 (最低要求)
    • get_delete_url:返回删除实例的url。
    • get_update_url:返回更新实例的url。
    • get_list_url:返回列出所有实例的url。
  • 类方法:
    • get_create_url:返回创建实例的url。

例如,对于名为“widget_delete”的删除url,get_delete_url可以是 定义为:

def get_delete_url( self ):
    return reverse( 'widget_delete', kwargs = {'pk' : self.pk } )

可以通过添加^ {TT9}$$混合来定义这些方法 初始化到您的模型,并在下面简单地命名相应的url 方式:

  • lowercasemodelname_detail:用于详细视图。
  • lowercasemodelname_create:用于createview。
  • lowercasemodelname_update:用于updateview。
  • lowercasemodelname_delete:删除视图。
  • lowercasemodelname_list:对于列表视图。

自定义模型字段的显示

默认的局部视图只打印每个字段的值。

如果您对任何字段的要求超过了打印值,只需 为该字段定义详细方法(“<;field>;_detail”):

class Widget( models.Model )

    sku = models.IntegerField()

    def sku_detail( self ):
        return 'SKU_%d' % ( self.sku )

查看要求

要直接使用模板,而不是扩展模板,只需指定其名称 到基于类的视图的模板名属性。

# in views.py
class CreateWidget( generic.CreateView ):
    model = models.Widget
    template_name = 'bsct/plain/form.html'

模板要求

默认情况下,模板从“base.html”扩展并填充 块bsct_main。 因此,您需要一个名为“base.html”的模板 它必须包含块bsct_main

# base.html
{% block BSCT_MAIN %}
{% endblock %}

如果要使用 包确保您的基本模板还定义了块bsct\u css

# base.html
{% block BSCT_CSS %}
{% endblock %}

</head>
<body>

{% block BSCT_MAIN %}
{% endblock %}

如果您希望模板从“base.html”以外的模板扩展, 只需提供其名称作为上下文变量“bsct_base”的值。

#in views.py
class CreateWidget( generic.CreateView ):
    model = models.Widget,
    template_name = 'bsct/plain/form.html'

    def get_context_data(self, **kwargs):
        context = super(CreateWidget, self).get_context_data(**kwargs)

        context[ 'bsct_base' ] = 'my_special_widget_base.html'
        return context

自动生成视图和URL

通过使用 bsct.urls.urlgenerator生成一组url(和视图),并将它们包含在应用程序中urlpatterns:

from bsct.urls import URLGenerator
from crud import models

bsct_patterns = URLGenerator( models.Widget ).get_urlpatterns()

urlpatterns = patterns( '',
    url( '', include( bsct_patterns ) )
)

您也可以选择仅自动生成选定的几个URL:

urlpatterns = patterns( '',

        url( '',

            # Automatically generate the list and delete url+view.
            URLGenerator( models.Widget ).get_delete_url(),

            # Pass parameters to the generic ListView.
            URLGenerator( models.Widget ).get_list_url( paginate_by = 3 ),


            # Use our custom create view.
            url(
                r'^widget/create/(?P<id>\d+)/$',

                MyWidgetCreateView.as_view(),

                name = 'widget_create'
            ),
        )
    )

模板定制

自定义这些模板与创建自己的模板和 包括所需的django引导crud模板。

# widget_list.html
{% extends 'bsct/plain/list.html' %}

{% block BSCT_LIST_ACTIONS %}
    <a href='{% object.use_widget %}'> Use Widget </a>
{% endblock %}

默认的'bsct/base.html'链接到由cdn托管的小型引导程序 css文件。如果您喜欢使用自己的版本,只需重写块 引导程序。

^{p页r 10}$

由开发人员为开发人员构建

django bootstrap crud模板是一个开源项目,最终目标是 宿主django的用户提交的引导模板集的集合。

如果您有一组引导模板想要包含,只需 遵循以下五个步骤(假设您有一个github帐户):

  1. 分叉并克隆https://github.com/Alem/django-bootstrap-crud-templates
  2. 确保您的设备至少有以下两个模板:
    • form.html
    • list.html
    • detail.html
    • 确认“delete.html”
  3. (可选)创建一个readme.rst,其中包含模板集和任何其他相关信息(外部依赖项、作者、主页)的简要说明。
  4. 将所有文件放入“bsct/templates/yourthemename/”中。
  5. 拉。

所有贡献的模板都继承了包含项目的许可证。

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

推荐PyPI第三方库


热门话题
java Jsonify使用Jackson来定义嵌套对象   在Swing中禁用java图形调试   java Selenium Webdriver拖放在Jenkins上不起作用   java我对一个显示器的问题有一个非常不切实际的询问   java增强的“for”循环导致ArrayIndexOutOfBoundsException   ArrayAdapter适用于Java中的安卓编程,字符串数组   linux在Ubuntu上通过PulseAudio播放Java音频文件时出错   java在Spring应用程序中加载内部(类路径)和外部属性文件   java使用Maven连接到mySQL   Java应用程序的设计   websocket在电报api java中与dc的连接   java XMLStreamException,因为xml中的(&N)   java从控制台输出到JTextArea   Java导出文本文件   java实现parseInt方法   java为什么servlet容器会同步对特定资源/servlet的多个请求的访问?   循环中的Java“while”变量   用Java编程一个国际象棋游戏,gameOver布尔不起作用   java如何获得真正的JPanel大小?