Python 在/register/name'处出现名称错误;用户';没有定义
我目前正在开发一个博客webapp,我试图用一对一字段扩展我的Django用户框架,一切正常,但当我试图注册一个新用户时,它抛出了一个namearror。还值得注意的是,用户正在被创建和存储(我在管理页面中查看了它)。这意味着my views.py中的这句话是在制造问题。有人能帮我吗 我的观点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.
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)分配,否则您必须使用预保存信号而不是这种方式。”