playerPerform.u是否始终为false,但玩家仍在保存

2024-07-01 08:23:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我设计了一个排行榜应用程序,里面有玩家和游戏

注册时,它会创建一个Django用户并创建一个与该用户关联的Player对象。当我注册时,如果PlayerForm.is_validTrue,则在PlayerForm(UserCreationForm)处创建用户和播放器,并呈现elosearch.html,否则,它返回register.html

我可以看到正在创建播放器和用户,但是当我提交请求时,它呈现的是register.html,而不是elosearch.html。如果is_valid产生True,它是如何呈现错误的视图的?如果没有,为什么播放器和用户要保存?我创建了自己的html表单,因此实际上不需要将表单传递给模板(不使用args)

演奏者

class PlayerForm(UserCreationForm):
    username = forms.CharField(required=True)
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = (
            'username',
            'email',
            'password1',
            'password2',
        )

    def save(self, commit=True):
        user = super(PlayerForm, self).save(commit=False)
        user.username = self.cleaned_data['username']
        user.email = self.cleaned_data['email']
        user.password1 = self.cleaned_data['password1']
        user.password2 = self.cleaned_data['password2']
        new_player = Player(name=str(user.username), user=user)

        if commit:
            user.save()
            new_player.save()

        return user

注册视图

def register(request):
    if request.method == 'POST':
        form = PlayerForm(request.POST)
        if form.is_valid():
            form.save()
            return render(request, 'elousers/elosearch.html')
        else:
            return render(request, 'elousers/register.html')
    else:
        form = PlayerForm()
        args = {'form': form}
        return render(request, 'elousers/register.html', args)

我可以看到正在创建播放器和用户,但是当我提交请求时,它呈现的是register.html,而不是elosearch.html


Tags: 用户selfformregistertrueemailrequestsave

热门问题