Django UserForm编辑没有用户名

时间:2017-10-26 14:19:43

标签: django django-templates django-views

我为用户制作了自定义用户界面。我可以创建用户并且编辑没有问题,除了在编辑表单中,以前的用户没有显示(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>

谢谢!

2 个答案:

答案 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>