Python 在/register/name'处出现名称错误;用户';没有定义

Python 在/register/name'处出现名称错误;用户';没有定义,python,django,Python,Django,我目前正在开发一个博客webapp,我试图用一对一字段扩展我的Django用户框架,一切正常,但当我试图注册一个新用户时,它抛出了一个namearror。还值得注意的是,用户正在被创建和存储(我在管理页面中查看了它)。这意味着my views.py中的这句话是在制造问题。有人能帮我吗 我的观点 from django.shortcuts import render, redirect from django.contrib import messages from django.contrib.

我目前正在开发一个博客webapp,我试图用一对一字段扩展我的Django用户框架,一切正常,但当我试图注册一个新用户时,它抛出了一个namearror。还值得注意的是,用户正在被创建和存储(我在管理页面中查看了它)。这意味着my views.py中的这句话是在制造问题。有人能帮我吗

我的观点

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import UserRegisterForm, ProfileForm


def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        profile_form = ProfileForm(request.POST)
        if form.is_valid() and profile_form.is_valid():
            form.save()
            profile = profile_form.save(commit=False)
            profile.user = user  
            profile.save()

            username = form.cleaned_data.get('username')
            messages.success(request, f'Your account has been created! You are now able to log in')
            return redirect('login')
    else:
        form = UserRegisterForm()
        profile_form = ProfileForm
    return render(request, 'users/register.html', {'form': form, 'profile_form': profile_form})

@login_required
def profile(request):
    return render(request, 'users/profile.html')
我的模特

from django.db import models
from django.contrib.auth.models import User


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')
    CHOICES = (
        ('AB+', 'AB+'),
        ('AB-', 'AB-'),
        ('A+', 'A+'),
        ('A-', 'A-'),
        ('B+', 'B+'),
        ('B-', 'B-'),
        ('O+', 'O+'),
        ('O-', 'O-'),
        )
    bloodgroup = models.CharField(max_length=100, choices= CHOICES)
    bio = models.TextField(max_length=300)

    def __str__(self):
        return f'{self.user.username} Profile'
我的表格.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import Profile


class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()



    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

    def save(self, commit=True):
        user = super().save(commit=False)

        if commit:
            user.save()
        return user


class ProfileForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('image', 'bloodgroup', 'bio')


profile.user=user
更改为
profile.user=request.user

只需添加

from django.contrib.auth.models import User
而不是

from django.contrib.auth import User

您希望
user
profile.user=user
中是什么?您从未使用该名称定义变量。现在它显示:
Profile.user“必须是”用户“实例。
现在它说:
'AnonymousUser'对象不适用
您应该登录以处理此错误,您可以在此视图中使用需要登录的装饰器我应该在何处添加需要登录的装饰器?不,这是错误的,请尝试从User.object.get(User=request.User)分配,否则您必须使用预保存信号而不是这种方式。”