PlayerForm.is_valid всегда false, но игрок все еще сохраняет - PullRequest
3 голосов
/ 10 мая 2019

Я разработал приложение для списка лидеров, в котором есть игроки и игры.

При регистрации он создает пользователя Django и создает объект Player, связанный с ним.Когда я регистрируюсь, если PlayerForm.is_valid равно True, пользователь и игрок создаются там, где PlayerForm(UserCreationForm), и он отображает elosearch.html, в противном случае он возвращается к register.html.

Я могувидите, что игрок и пользователь создаются, но когда я отправляю запрос, он отображает register.html, а не elosearch.html.Как это отображает неправильное представление, если is_valid производит True, а если нет, почему проигрыватель и пользователь экономят?Я создал свою HTML-форму, поэтому мне не нужно передавать форму в шаблон (аргументы не используются)

PlayerForm

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...