亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

TypeError at /register/ 'AnonymousUser' 對象不可迭代

TypeError at /register/ 'AnonymousUser' 對象不可迭代

波斯汪 2022-09-06 17:48:59
我目前正在開發一個博客Web應用程序,我試圖用一對一字段擴展我的Django用戶框架,一切都很好,但是當我嘗試注冊新用戶時,它會拋出TypeError。還值得注意的是,正在創建和存儲用戶(我從管理頁面進行了檢查)。它是說,我 views.py 的這一發言正在制造問題。profile.user = Profile.objects.get(user=request.user)我的 models.py:from django.db import modelsfrom django.contrib.auth.models import Userclass 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'我的 views.pyfrom django.shortcuts import render, redirectfrom .models import Profilefrom django.contrib import messagesfrom django.contrib.auth.decorators import login_requiredfrom .forms import UserRegisterForm, ProfileFormdef 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 = Profile.objects.get(user=request.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_requireddef profile(request):    return render(request, 'users/profile.html')
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

我認為你寫的兩個信號是不必要的。此外,此行也不起作用:


profile.user = Profile.objects.get(user=request.user)  

因為您尚未登錄。未登錄,您將無法在此處獲取用戶實例。但沒有必要。因為,您可以從另一個窗體獲取用戶實例。喜歡這個:


def register(request):

    if request.method == 'POST':

        form = UserRegisterForm(request.POST)

        profile_form = ProfileForm(request.POST, request.FILES)

        if form.is_valid() and profile_form.is_valid():

            user = 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})

另外,請務必刪除這兩個信號。


查看完整回答
反對 回復 2022-09-06
  • 1 回答
  • 0 關注
  • 286 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號