在 Django 项目的 View.py 中可以禁用字段吗?

Chi*_*yak 2 python django

def resume_edit(request, r_id):

    r = Resume.get.object(pk=r_id)
    resume = ResumeModelForm(instance=r)

    resume.fields['email'].widget.attrs['readonly'] = True 

    return render(request, 'resumes/resume.html', context)
Run Code Online (Sandbox Code Playgroud)

我试图这样做但它不起作用,我知道如何在 Forms.py 中做到这一点,但我想知道它可能与否?

我使用 Django 2.0

Wil*_*sem 5

是的,从,一个字段的.disabled属性可以设置为True

所以我们可以使用:

def resume_edit(request, r_id):
    r = Resume.get.object(pk=r_id)
    resume = ResumeModelForm(instance=r)

    resume.fields['email'].disabled = True 

    return render(request, 'resumes/resume.html', context)
Run Code Online (Sandbox Code Playgroud)

这不仅保证了相对应的形状零件的HTML被禁用,也将忽略可能发生的变化,当你发布Form(请注意,你当然首先需要禁止的领域)。

由于render(..)调用会生成 HTML,因此字段当然应该呈现、验证或.save()“d”之前进行更改。

.disabled属性通常比 usingreadonly等更好。因为某些表单元素有一种特殊的方法可以在 HTML 级别禁用该元素(有些则disabled改为使用)。此外,如前所述,它不仅在 HTML 级别禁用表单元素。如果用户想要发布恶意值,那么表单将简单地忽略这些。