'CustomUser' 对象没有属性获取

'CustomUser' object has no attribute get

我在访问视图时遇到此错误。 特别是说我的错误在

`{% if form.errors %}
<p>{{form.errors}}</p>
{% endif %}`"

但是这个错误对我来说很奇怪。我在这个视图中有一个表格。

class UserCreationLabForm(UserCreationForm):
username = forms.RegexField(label=("Email"), max_length=30, regex=r'^[\w.@+-]+$',
help_text = ("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
error_messages = {'invalid': ("This value may contain only letters, numbers and @/./+/-/_ characters.")})
telephone = forms.IntegerField(required=False)

is_secretarial = forms.BooleanField(required=False)

class Meta(UserCreationForm.Meta):
    model = CustomUser
    fields = ('email', 'user_type', 'telephone', 'FKLab_User', 'is_secretarial',)
    exclude = ['user_type','FKLab_User', 'username',]

def clean(self):
    cleaned_data = super(CustomUser,self).clean()
    email = self.cleaned_data.get('email')
    telephone = self.cleaned_data.get('telephone')
    is_secretarial = self.cleaned_data.get('is_secretarial')
    username = self.cleaned_data.get('username')

    if len(email) == 0:
        self._errors['email'] = self.error_class(['Insert cant be empty.'])
    
    if len(telephone) == 0:
        self._errors['telephone'] = self.error_class(['Insert cant be empty.'])

    if len(is_secretarial) == 0:
        self._errors['is_secretarial'] = self.error_class(['Insert cant be empty.'])

    if len(username) == 0:
        self._errors['username'] = self.error_class(['Insert cant be empty.'])
    
    return self.cleaned_data

我不得不覆盖它只接受电子邮件。不过昨天还好好的。

我的观点

    @login_required
@permission_classes((IsAuthenticated,))
#Registration view.
def RegistrationLab_View(request):
    fklab_user = HospitalViewRoleForUsers.objects.get(id = request.user.FKLab_User.id)
    print(fklab_user.id)
    if request.user.is_authenticated and request.method == "POST":
        form = UserCreationLabForm(request.POST)
        if form.is_valid():
            new_user = form.save(commit=False)
            #new_user.username = 
            new_user.FKLab_User = fklab_user
            new_user.user_type = 1
            new_user.save()

            messages.success(request, "The user was successfully created.")
            return HttpResponseRedirect('/register/')

        else:
           return messages.error(request, "Please correct the error below.")

    else:
        form = UserCreationLabForm(request.user)
            
    return render(request,'user_profile/register/registerlab_user.html', {'form': form})

有人知道为什么会出现这个错误吗?我一直在到处寻找答案。

到处使用渲染不是更好吗?

@login_required
@permission_classes((IsAuthenticated,))
#Registration view.
def RegistrationLab_View(request):
    fklab_user = HospitalViewRoleForUsers.objects.get(id = request.user.FKLab_User.id)
    print(fklab_user.id)
    if request.user.is_authenticated and request.method == "POST":
        form = UserCreationLabForm(request.POST)
        if form.is_valid():
            new_user = form.save(commit=False)
            #new_user.username = 
            new_user.FKLab_User = fklab_user
            new_user.user_type = 1
            new_user.save()

            messages.success(request, "The user was successfully created.")
            return HttpResponseRedirect('/register/')

        else:
            //if you want to use the error that the django form returns, in your html you call form.error returning this
           return render(request,'user_profile/register/registerlab_user.html', {'form': form})

    
    else:
        form = UserCreationLabForm(request.user)
            
        return render(request,'user_profile/register/registerlab_user.html', {'form': form})

在你的 html 中试试这个

{% if form.errors %}
       {% for field in form %}
           {% for error in field.errors %} 
              <div class="alert alert-danger">
                   <strong>{{ error|escape }}</strong>
              </div>
           {% endfor %}
       {% endfor %}
    {% endif %}