django crud使用单个视图,因此只有一个url。

singleurlcrud的Python项目详细描述


django crud通过一个视图
==



django表crud操作的单个视图实现。单个视图
表示要在url名称空间中注册的单个url。所有crud操作都使用相同的url调用,但使用url参数来区分它们。这使得
不太拥挤,URL命名空间更简单。

project不再维护或使用此项目。此后,我转向了一个利用django基于类的视图的新crud。这是更模块化的,重用了django核心代码中所有的好位。您可以在[这里](https://github.com/harikvpy/django popupcrud.git)找到它。

但是,管理框架与django的默认用户管理及其权限管理系统密切相关。
如果您的项目绕过了这两个系统中的任何一个,那么在管理框架中使用crud可能会有点棘手。

其次,django admin还隐式地向url
名称空间添加了一些url。这些url列出了其模型已注册的应用程序
,对于每个应用程序,都列出了应用程序中具有管理crud接口的模型。虽然可以通过重写modeladmin类并使用它创建自己的基于管理的crud类来强制删除这些类,但是管理和绕过它的各种依赖项会很快变得乏味。当django升级时,您需要检查新的管理界面,以确保它没有在您的url名称空间中引入任何新的"漏洞"。

表CRUD操作。要使用这个视图类,请从该视图类派生,为其提供适当的初始化参数,然后显式地将其连接到url名称空间。

安装crud的最简单方法是使用pip从pypi获取它。执行此操作的方法是:

`pip install singleurlcrud`

>2。将其添加到项目"settings.py"中的已安装应用:
````
已安装的应用=(

"singleurlcrud",


````
它与
源代码捆绑在一起:
```
来自django.db import models


class question(models.model):
question_text=models.charfield(max_length=200)
pub_date=models.datetimefield('date published')
author=models.foreignkey(author,null=true,默认值=无)
````

若要获取此表的全功能crud,请声明如下视图:
```
从singleurlcrud导入crud view
从.models导入question

questioncrudview(crudview):
model=question
list\u display=("question\u text","pub_date","author")
```

此后,通过url将此视图挂接到所需的url。py:
````
from django.conf.urls import url
from.views import*

urlpatterns=[
url(r'^questions/$',questioncrudview.as廑view(),name='questions')
]
```

就这样!您将得到一个功能齐全的crud,它允许您创建、更新和删除问题表中的记录,全部植根于
`yoursite.com/questions/`.

`方法
,并从中返回一个2元组列表,其中每个元组的格式为`(label,
handler,)`。label是将被d显示在Actions下拉菜单
中,handler是派生类方法,当用户选择相应的Action项时将调用该方法。

handler方法的格式应为
````
def action\u handler(self,request,qs):
'
参数:
请求-httprequest对象
qs-queryset,其中包含要对其执行操作
的选定行。


返回:
无-视图刷新自身
httpresponse-显式返回响应对象
'
mytablecrudview(crudview):



def get_actions(self):
return[
('mark as done'),mark_as_done,),
]


def mark_as_done(self,request,qs):
对于qs中的obj:
obj.mark_as_done()
对于隐式return none,可以忽略return none
````

是一个对象列表,每个操作一个,
原型itemAction。当用户选择操作时,会调用相应的
itemAction对象的doAction()方法。此方法将
所选行作为参数给定。

itemAction对象有三个需要初始化的类变量:

actions)来标识图标的css类。此操作的元素

下面的代码示例应使上面的选项更清晰:
````
Class MyTableCrud(crudView):

Class VoteAction(crudView.itemAction):
''''per item custom action definition''''
title=\('mark as done')
key="标记为完成"
css="glyphicon glyphicon ok"

def doaction(self,obj):
obj.mark_as完成()

````
为了方便起见,重写
crudview派生类中的"get_formset_class()"方法,并从
此方法返回子模型的"inline_formset"。

对于我们的示例项目"polls",author表的crud视图是引入内联表单集编辑的一个很好的候选视图,因为一个作者可以创建许多问题,因此模型由外键关联。为了实现这一点,我们只需重写如下的"get_formset_class()":

`````
class author crudview(crudview):
''author table crud''
model=author
list撸display=('name',"email")

def get_formset_class(self):
返回inlineformset_factory(
作者,父模型
问题,子模型
字段=['question_text','pub_date',#用于内联编辑的字段
是否可以删除=true,是否可以删除行?
extra=1)用于添加新子项的额外表单数
````
请注意,这里我们不使用任何自定义表单,而是将所有工作留给excellenge inlineformset_factory()。它为每个子模型实例构建一个带有单独
表单的表单集,并为输入新的子
模型实例创建一个额外表单。

这些
记录如下:

###` template_name`
指定用于呈现项列表的模板。这默认为
`singleurlcrud/list.html',很少需要自定义。


这是可选的,
如果没有指定,crud将使用"modelform_factory"创建一个表单,使用"form_fields"选项中指定的
字段。如果未指定"form_fields",则
crudview将尝试使用"list_display"中的字段。


默认情况下是允许的,即设置为true。


默认情况下是允许的,即设置为true。


默认情况下是允许的,即设置为true。

如果您有一个自定义的
模板想要使用不同的模板变量名(出于某种原因),则只需要自定义该模板即可。


默认为
"表表条带表压缩表边框"。


如果未指定,列名将默认为"list\u display"中指定的字段名
。对于可调用的列条目,属性值
`<;callable>;.short_description`用作列标题。



使用每个项目行的复选框
实现多个项目删除,然后选择顶部的dropdopwn菜单项。默认设置为"False"。

\crud urls`
related_d field_d_d urls`
通过弹出窗口创建和更新操作的模型的每个外键字段的crud url的字典将被启用。

也应该使用crudview来实现这个功能。

其中许多方法都是围绕类变量的简单包装器,允许为相关选项返回动态值。


默认情况下,如果定义了
,则返回"form_class"选项的值。如果未定义"form_class",则将返回
字段设置为"form_fields"或"list_display"值之一的模型的"modelform"类。



"form_class"将设置为"get_form_class"的返回值。`**kwargs`
将包含附加参数,例如CRUD的update
操作的表单初始数据,这些参数将传递给表单构造函数。

请注意,只有在未指定"form_class"且未重写"get_form()"时才会调用此方法。

crudview支持使用formset编辑子模型。若要激活此
功能,请重写此方法并返回要用于子模型实例的内联编辑的formset类。

通常打开e可以使用django factory方法之一"inlineformset_factory"
或"model formset_factory()"来创建此类。


默认情况下,此方法返回"none",禁用子模型编辑。


**kwargs)`
返回要用于编辑子模型实例的formset类实例。


\默认情况下,返回分配给选项变量"related庘field庘u curd庘urls"的值。


默认情况下返回"none"。

默认情况下返回"none"。

默认情况下返回"none"。

此方法返回的模板
用于在列表视图中呈现模型的每一行。您可以覆盖此选项以自定义每项呈现。

但是对于
模型,您可能需要呈现其他行,列出与模型行关联的子模型
实例。通过重写此
方法以返回自定义模板,可以实现此目的。

方法允许在运行时而不是代码中的静态定义期间确定此
值。

方法允许在运行时而不是代码中的静态定义期间确定此
值。

方法允许在运行时确定此
值,而不是在代码中进行静态定义。

方法允许在运行时而不是代码中的静态定义期间确定此
值。

或者您可能希望根据用户角色限制行的创建。
当动态确定此类逻辑并且不允许创建操作时,当表crud被激活时,您可以显示一条警告消息。

此方法允许您指定将显示在列表视图顶部(在此处创建新的..按钮应该是)
通知用户不允许创建行。


此列表的每个项都是一个2元组形式的`(text,url)`where`text`要添加到
面包屑将其超链接到'url`.


理想情况下,项目的基本模板应该
通过将列表中的每一项呈现为适当的
样式的`<;li>;'或类似的方式来处理此列表。


显示在Action下拉列表中,"handler"是派生类中的一个方法,当用户选择操作时将调用该方法。


\/>返回itemAction派生对象的列表,这些对象表示要为itemList中的每个项调用的附加项
特定操作。当操作被选中时,相应的itemAction对象的"doAction()"方法将被调用。itemAction具有以下原型:

````
类itemAction(对象):
title='
key='
css='

def doAction(self,item):
pass
```

\\\\\\\``item\`deletable(object)`
返回一个布尔值以指示是否可以删除该对象。默认情况下,true是基类返回的
。如果对任何对象返回false,则该项的delete
选项将被禁用。

允许控制每项删除
,并基于行或某些其他动态属性编辑操作。

kwargs)`
此helper方法返回一个格式良好的锚元素,该锚元素由其三个
形式的参数组成:
```
<;a href="reverse(urlname,kwargs=kwargs)">;label<;a>;
```
此helper可用于方便地从方法返回锚元素在列表视图中列为列之一。






---














《哈里马哈德万》lt;http://hari.xyz/>;`


































0.20-2016/1/30
++++++++++项操作(被称为项操作)

0.18-2016/1/22
+++++++++
-修复自述文件中的格式错误。rst.


+0.17
++++
-将变更日志移到history.rst,并通过嵌入脚本将其包含在安装程序长描述中。


0.16
+++
-修复setup.py中阻止pip安装工作的更多错误

>0.15
+++++
-修复setup.py中阻止pip安装工作的错误

>0.14
+++++
-修复setup.py中的错误。
-更新状态为"4-beta"。

0.13
+++
-使用django用于分页的纯分页。这提供了margin page
数字,它为列出数据量非常大、页数超过屏幕中可用宽度的表提供了很好的用户体验。


0.12
++++
-通过
将删除操作移动到一个独立的get操作中"?o=删除'参数。


0.11
++++
-操作按钮更改为使用按钮将其分组为BTN组。
-为按钮添加颜色,指示操作结果的严重性。


0.10
++++
-更改要指定为视图设置的表CSS类通过requestcontext提供。


0.9
+++
-将隐式标志名称重构为更友好的名称。例如:can_delete()已更改为item_deletable()。
-全局标志can-create、can-edit和can-delete已分别替换为
enable-create、enable-edit和enable-delete。

0.8
+++
-通过指定一个类
变量"pagetitle",添加对视图的支持以自定义页面标题。默认情况下将使用此标题,如果未指定,则模型的详细名称复数将设置为上下文中的标题



0.7
+++
-修复媒体属性,使其仅返回当前crud所需的媒体片段
操作。

0.6
+++
-修复can-delete()方法调用的错误参数。


0.5
+++
-当派生类通过重写
get_form()方法指定自定义表单,无法对relatedfield对象进行内联编辑/添加
。此版本包括对此的修复。


0.4
+++
-支持通过项属性
项进行每项编辑控制。可以编辑,这将返回一个布尔值,指示是否允许编辑。如果缺少属性,则默认为true。


0.3
+++
-通过项属性
支持每项删除控件。可以删除,这将返回一个布尔值,指示是否允许删除
。如果缺少属性,则默认为true。


0.2
+++
-通过弹出窗口支持内联编辑/添加相关字段对象。请注意,必须设计基础模板
以适应此功能,方法是删除修饰常规页的修饰。


0.1
++
-初始版本

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

推荐PyPI第三方库


热门话题
使用jaxb2annotateplugin和XJC工具的java自定义注释   java组织。xeustechnologies。jcl无法加载WstxInputFactory类   java JUnit在格式化字符串上比较失败   java Bukkit配置部分getKeys   如何关闭Java流?   java Struts2正则表达式配置   链式事务注释的java奇怪行为   java在两个JButton之间使用变量   java签署APK时内容会发生什么变化?   java LWJGL:Slick:3D世界中的绘图字体   如何分解Java数组?   在Java MySql中处理多个过滤器   java如何在Firebase数据库中跳过初始OnChildaded事件触发   java如何在PreviewView中使用CameraX?   在子类#中重写父类后访问父类原始方法的java已解决   java找不到类型的属性   游戏框架游戏!框架+Java