Django - 表单初始化如何工作?

查看view代码,在我看来,每次执行 GET 时都应该初始化表单类。

#views.py
if request.method == 'GET':
    form = PrenotaForm()
    return render(request, "prenota.html", {'form': form, 'posti_liberi': posti_disponibili, 'giovani_iscritti': giovani_iscritti})
else:
    # it's a POST

我想弄清楚的是为什么我的form代码在每次刷新时都不会执行:

# forms.py
class PrenotaForm(forms.ModelForm):
    size_gruppi = 30
    print("gruppi size is : " + str(size_gruppi))

在我的控制台中,我看到每次修改和保存forms.py文件时都会执行代码,或者每当我使用以下命令启动服务器时python manage.py runserver

正在执行系统检查...

gruppi 大小为:30

但是感兴趣的页面的简单刷新不会执行控制台中显示的代码:

Django 2.1 版,使用设置 'test_project.settings' 从http://127.0.0.1:8000/启动开发服务器 使用 CONTROL-C 退出服务器。[24/May/2019 15:35:38] "GET /it/iscrizione/prenota/ HTTP/1.1" 200 11898 [24/May/2019 15:35:38] "GET /static/images/favicon.ico HTTP /1.1" 200 549 [24/May/2019 15:35:39] "GET /it/iscrizione/prenota/ HTTP/1.1" 200 11898 [24/May/2019 15:35:39] "GET /static/images /favicon.ico HTTP/1.1" 200 549 [24/May/2019 15:35:39] "GET /it/iscrizione/prenota/ HTTP/1.1" 200 11898 [24/May/2019 15:35:39]" GET /static/images/favicon.ico HTTP/1.1" 200 549

它给我带来了问题,因为表单并不总是更新(例如:动态选择 DDL)触发验证错误。

我的方法/代码有问题,还是 django MTV/MVC 模式的正常行为?

我该怎么做才能在每次页面刷新时更新表单?

迪克格罗滕

在python中,类属性(也称为“类成员”)在读取文件时与类相关联。所以size_gruppi在第一次导入文件时设置。当您实例化一个类 ( PrenotaForm()) 时,__init__()会调用该类的方法。除非您覆盖它,否则实例将具有与类相同的属性。

因此,如果您想在实例化类时更改某些属性,请添加初始化程序:

class PrenotaForm(ModelForm):
    size_gruppi = 30

    def __init__(self, *args, **kwargs):
        self.size_gruppi = kwargs.pop('size_gruppi', self.size_gruppi)
        super().__init__(*args, **kwargs)

# in your view
form = PrenotaForm(size_gruppi=50)  # form.size_gruppi = 50
form = PrenotaForm()  # form.size_gruppi = 30

所以在这里我可以通过将其传递给初始化程序来覆盖该属性。如果我不通过它,则保留默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Django 中初始化我的表单?

来自分类Dev

了解Django表单初始化

来自分类Dev

从Django中的url参数初始化表单输入字段

来自分类Dev

使用Kwargs的Django表单初始化密钥错误

来自分类Dev

初始化后Django在formset中生成错误数量的表单

来自分类Dev

Django表单使用“此字段为必填”消息初始化

来自分类Dev

在 ModelForm django 中使用 request.user 初始化表单

来自分类Dev

在Django中初始化GeopositionField

来自分类Dev

在Django CMS中初始化MultipleChoiceField

来自分类Dev

Django初始化期间Django迁移失败

来自分类Dev

如何在Django中用ForeignKey初始化一个空对象?

来自分类Dev

如何在Django SessionWizardView中重新初始化会话变量

来自分类Dev

如何立即初始化可变数量的Django模型字段?

来自分类Dev

如何在Django模板中初始化变量并将其递增?

来自分类Dev

如何在与自身(对象级别)不相关的Django模型中初始化ManyToMany字段?

来自分类Dev

如何使用模型中的其他字段初始化Django模型中的字段

来自分类Dev

Django中的单元测试:如何初始化数据库

来自分类Dev

如何立即初始化可变数量的Django模型字段?

来自分类Dev

如何在Django模板中初始化变量并将其递增?

来自分类Dev

如何在整个查询集上初始化 Django ModelForms?

来自分类Dev

如何在不不断初始化的情况下在 Django 中使用大型数组字段?

来自分类Dev

这个 Java 初始化是如何工作的?

来自分类Dev

云初始化如何工作?

来自分类Dev

使用docker-compose初始化Django应用

来自分类Dev

在每个Django测试之前初始化MEDIA_ROOT

来自分类Dev

Django Forms.py初始化错误?

来自分类Dev

使用docker-compose初始化Django应用

来自分类Dev

Django添加/编辑表单不返回初始化时设置的初始/默认值

来自分类Dev

初始化表单集

Related 相关文章

  1. 1

    如何在 Django 中初始化我的表单?

  2. 2

    了解Django表单初始化

  3. 3

    从Django中的url参数初始化表单输入字段

  4. 4

    使用Kwargs的Django表单初始化密钥错误

  5. 5

    初始化后Django在formset中生成错误数量的表单

  6. 6

    Django表单使用“此字段为必填”消息初始化

  7. 7

    在 ModelForm django 中使用 request.user 初始化表单

  8. 8

    在Django中初始化GeopositionField

  9. 9

    在Django CMS中初始化MultipleChoiceField

  10. 10

    Django初始化期间Django迁移失败

  11. 11

    如何在Django中用ForeignKey初始化一个空对象?

  12. 12

    如何在Django SessionWizardView中重新初始化会话变量

  13. 13

    如何立即初始化可变数量的Django模型字段?

  14. 14

    如何在Django模板中初始化变量并将其递增?

  15. 15

    如何在与自身(对象级别)不相关的Django模型中初始化ManyToMany字段?

  16. 16

    如何使用模型中的其他字段初始化Django模型中的字段

  17. 17

    Django中的单元测试:如何初始化数据库

  18. 18

    如何立即初始化可变数量的Django模型字段?

  19. 19

    如何在Django模板中初始化变量并将其递增?

  20. 20

    如何在整个查询集上初始化 Django ModelForms?

  21. 21

    如何在不不断初始化的情况下在 Django 中使用大型数组字段?

  22. 22

    这个 Java 初始化是如何工作的?

  23. 23

    云初始化如何工作?

  24. 24

    使用docker-compose初始化Django应用

  25. 25

    在每个Django测试之前初始化MEDIA_ROOT

  26. 26

    Django Forms.py初始化错误?

  27. 27

    使用docker-compose初始化Django应用

  28. 28

    Django添加/编辑表单不返回初始化时设置的初始/默认值

  29. 29

    初始化表单集

热门标签

归档