gpt4 book ai didi

python - 从数据库模式生成自定义表单

转载 作者:行者123 更新时间:2023-12-01 06:15:45 25 4
gpt4 key购买 nike

我目前是 web2py 用户,但发现我仍然偶尔回到 Django(我开始的地方)。特别是在处理项目时,我想使用 web2py 中尚不存在的一些特定的 django 应用程序/插件/扩展。

我在 web2py 中离不开的一件事(我正在 Django 中寻找解决方案)是从数据库表创建 html 表单并能够在 View 中自定义其外观和布局的方法,没有 JavaScript。

我正在寻找的关键内容:

  1. 从数据库表生成 html 表单
  2. 为生成的 html 表单中的每个字段分配自定义 css 类/id(禁用 js)
  3. 通过 View 中的方法调用将每个表单字段/元素放置在预制的 html View 中

我有一个表 A。在 web2py 中我可以执行以下操作(在 Controller 中):

def display_form():
form = SQLFORM(db.table_A)
#Can I do the following in Django? Assign custom CSS to each form field?
form.element(_name='email')['_class'] = = "custom_css_classes, list"

if form.accepts(request.vars, session):
response.flash = 'form accepted'
elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill out the form'
return dict(form=form)

然后,在 View 中我可以执行以下操作:

form.custom.start
form.custom.widget.name
form.custom.widget.email
form.custom.widget.form_field_name
...
<div class="span-5 last"><input type="submit" class="register_btn" value="Sign Up"></input></div>
form.custom.end

上面的内容采用一个数据库表,创建一个 HTML 表单,然后让我将每个单独的表单字段粘贴到我想要的预制 HTML 中的任何位置(在传递的“表单”上使用那些“自定义”方法调用)对象。包括我分配给生成的 html 表单的每个单独字段的自定义 CSS 类。

有关上述代码的详细信息,请参阅文档:

http://web2py.com/book/default/chapter/06?search=define_table

http://web2py.com/book/default/chapter/07?search=sqlform#SQLFORM

http://web2py.com/book/default/chapter/05?search=#Server-side-DOM-and-Parsing

http://web2py.com/book/default/chapter/07?search=form.custom

如何在 Django 中执行上述操作而不用布局 hack 弄脏我的 javascript。假设在我需要运行我的应用程序的浏览器中禁用了 javascript。此外,我很想使用 Django admin。也欢迎 Pylons 解决方案!

对此的文章/教程/操作方法的链接将不胜感激。另外,请使用您在回复中提到的方法得出上述代码的等效结果...

最佳答案

使用 ModelForm 并通过显式声明来覆盖您想要自定义的任何字段。

如果你想设置像classid这样的字段属性,你需要这样做:

name = forms.CharField(
widget=forms.TextInput(attrs={'class':'special'}))

如果您感兴趣,可以通过在 Meta 类中指定 fields 序列来更改字段的顺序:

class Meta:
model = YourModel
fields = ('title', 'content')

您可以在此处阅读完整文档: http://docs.djangoproject.com/en/dev/ref/forms/widgets/#django.forms.Widget.attrs

关于python - 从数据库模式生成自定义表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3431722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com