gpt4 book ai didi

django - 使用Django表单显示和编辑?

转载 作者:行者123 更新时间:2023-12-04 12:38:29 24 4
gpt4 key购买 nike

我在努力如何在Django中最好地创建可用于显示或编辑数据的HTML页面。也就是说,我希望该字段的值在显示模式下显示为文本,但在编辑/添加模式下显示在其小部件中。似乎Django并非设计用于执行此操作:这些字段始终显示在其小部件中(例如,文本输入,文本区域,
等等)。

有没有一种通用的技术来处理此问题,而没有一种用于表单,而另一种却没有使用表单?

我在考虑可以用于每个表单字段的自定义templatetag过滤器,例如:

{{form.field_name | render_field:mode}}

其中,render_field将根据模式返回字段的HTML小部件,或者仅返回值为文本的值。

我错过了什么吗,或者这是一个可行的解决方案?

最佳答案

显然,回答了我自己的问题。我最终得到了一个三部分的解决方案:

  • 将模型附加到表单,所以我将为每个字段使用默认的显示小部件
  • 使用模板标记编写表单,并将其传递给form.field,user和action
  • 写一个渲染模板标签来处理#2

  • 步骤1:

    form.model =模型(...)

    第二步:

    {{form.field1.label}}
    {%呈现form.field1用户操作%}

    {{form.field2.label}}
    {%呈现form.field2用户操作%}

    第三步:

    就像是:

    def render(formfield,user,action,default_text =“Private”):
    如果不是user.is_authenticated():
    Action =“查看”
    如果 Action ==“ View ”:
    如果user.is_authenticated():
    字段名称= formfield.name
    retval = str(getattr(formfield.form.model,fieldname))
    别的:
    retval = default_text
    别的:
    retval = formfield.as_widget()
    返回retval

    关于django - 使用Django表单显示和编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1906994/

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