我为用户制作了自定义用户界面。我可以创建用户并且编辑没有问题,除了在编辑表单中,以前的用户没有显示(passwor1也没有,但我猜不错)。
我不知道我错过了什么。这可能是个愚蠢的事情,但我想让它显示出来。
表格:
class UserForm(UserCreationForm):
def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
self.fields['username'].widget = TextInput(attrs = {'class': 'form-control',})
self.fields['password1'].widget = PasswordInput(attrs = {'class': 'form-control',})
self.fields['password2'].widget = PasswordInput(attrs = {'class': 'form-control',})
class Meta:
model = User
fields = ['username', 'password1', 'password2']
观点:
class UserUpdateView(LoginRequiredMixin, PermissionRequiredMixin, SuccessMessageMixin, UpdateView):
model = User
form_class = UserForm
template_name = 'security/user_create.html'
success_message = "El usuario fue editado exitosamente."
permission_required = ('user.can_update')
def get_success_url(self, **kwargs):
context = super(UserUpdateView, self).get_context_data(**kwargs)
person_id = self.kwargs['person_id']
return reverse('people:person-detail', args = [person_id])
def get_context_data(self, **kwargs):
context = super(UserUpdateView, self).get_context_data(**kwargs)
context['person'] = Person.objects.get(pk = self.kwargs['person_id'])
context['form_user'] = self.form_class
return context
模板:
<div class="form-group">
<div class="col-sm-9">
{{ form_user.username }}
</div>
</div>
谢谢!
答案 0 :(得分:1)
您不应该定义或使用form_user
。这是对 class 形式的引用; 实例化表单(包括初始数据)已作为form
传递给模板。
答案 1 :(得分:0)
UpdateView允许您只在模板中放置{{ form }}
而无需在视图中定义表单。
要使表单正常工作,您将需要以下内容:
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update" />
</form>