在Django中,如果你想在表单中传递一个不可编辑的username
字段,你可以通过以下步骤实现:
在用户注册或登录页面中,有时需要显示用户的username
,但不允许用户编辑。
首先,创建一个表单类,定义username
字段为只读:
# forms.py
from django import forms
class UserForm(forms.Form):
username = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly'}))
在视图中,实例化表单并传递给模板:
# views.py
from django.shortcuts import render
from .forms import UserForm
def user_profile(request):
form = UserForm()
return render(request, 'user_profile.html', {'form': form})
在模板中渲染表单:
<!-- user_profile.html -->
<!DOCTYPE html>
<html>
<head>
<title>User Profile</title>
</head>
<body>
<h1>User Profile</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
</body>
</html>
username
字段仍然可编辑确保在表单类中正确设置了readonly
属性:
username = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly'}))
username
字段被忽略由于readonly
属性的限制,表单提交时username
字段的值不会被传递。可以通过以下方法解决:
username
的值:def user_profile(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
# 处理其他字段
else:
form = UserForm(initial={'username': '预设的用户名'})
return render(request, 'user_profile.html', {'form': form})
<script>
document.addEventListener("DOMContentLoaded", function() {
document.getElementById("id_username").setAttribute("readonly", "readonly");
});
</script>
通过以上步骤,你可以在Django表单中传递一个不可编辑的username
字段,并解决可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云