gpt4 book ai didi

python - 禁用 Django 中所有表单字段的语法

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:45 25 4
gpt4 key购买 nike

我正在尝试显示用户在项目中的个人资料。我想呈现一个表单,但将其禁用/无法更改(仅显示)。我不知道它的语法。帮助将不胜感激!

这是 view.py:

@login_required
def profile(request):
user_form = UserForm(instance=request.user)
user_form.fields.disabled = True <------- HELP HERE
return render(request, 'rentadevapp/profile.html', {'user_form': user_form})

我基本上只想显示一个只读/禁用的表单。用户然后有一个编辑按钮,将他们带到个人资料编辑页面。

感谢您的帮助!

以下是 html 以防万一:

 <form method="GET" action="/profile_edit">{% csrf_token %}
{{ user_form|crispy }}
<button type="submit" class="edit btn btn-default btn-block btn-lg">Edit</button><br>
</form>

表格.py

class UserForm(forms.ModelForm):

password = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)

class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email')

最佳答案

因为您似乎在使用 django-crispy-forms,所以我会使用以下内容:

class UserForm(forms.ModelForm):

password = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)

def __init__(self,disable_fields=False, *args, **kwargs):
super().__init__(*args, **kwargs)
if disable_fields:
self.fields['password'].disabled = True
self.fields['password2'].disabled = True

class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email')

因此,当您要创建表单时,应该这样做:

@login_required
def profile(request):
user_form = UserForm(instance=request.user, disable=True)
return render(request, 'rentadevapp/profile.html', {'user_form': user_form})

关于python - 禁用 Django 中所有表单字段的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55506000/

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