Форма регистрации в Django не публикует метод запроса - PullRequest
0 голосов
/ 21 мая 2019

Я изменил свой RegisterForm с django UserCreationForm, потому что я хотел перевести метки в форме. Он работает нормально, но когда я пытаюсь нажать кнопку Sign Up, отображается сообщение об ошибке:

 'RegisterForm' object is not callable 

Вероятно, это ошибка, потому что я изменил UserCreationForm в class RegisterForm(UserCreationForm) и вернул только переменную с именем user - без __call__ метода для UserCreationForm и использовал метод POST для этого user var , В сообщении об ошибке даже есть строка проблемы. Это строка, а вот и весь код. Есть ли способ использовать метод POST для этого отредактированного UserCreationForm?

  form = user(request.POST)


from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
from django.contrib import messages

class RegisterForm(UserCreationForm):

    email = forms.EmailField(label = "Eメール",
        widget=forms.TextInput(attrs={'style': 'position: relative;left: 61px;'}))
    first_name = forms.CharField(label = "名", max_length=10,
        widget=forms.TextInput(attrs={'style': 'position: relative;left: 105px;'}))
    last_name = forms.CharField(label = "性", max_length=10,
        widget=forms.TextInput(attrs={'style': 'position: relative;left: 105px;'}))
    username = forms.CharField(label = "ユーザー名", max_length=10,
        widget=forms.TextInput(attrs={'style': 'position: relative;left: 40px;'}))
    password1 = forms.CharField(label = "パスワード",
        widget=forms.TextInput(attrs={'style': 'position: relative;left: 40px;'}))
    password2 = forms.CharField(label = "パスワード確認",
        widget=forms.TextInput(attrs={'style': 'position: relative;left: 8px;'}))

    class Meta:
        model = User
        fields = ("username", "first_name", "last_name", "email", "password1", "password2")


        def save(self, commit=True):
            user = super(RegisterForm, self).save(commit=False)
            user.username = self.cleaned_data["username"]
            user.first_name = self.cleaned_data["first_name"]
            user.last_name = self.cleaned_data["last_name"]
            user.email = self.cleaned_data["email"]
            user.password1 = self.cleaned_data["password1"]
            user.password2 = self.cleaned_data["password2"]
            if commit:
                user.save()
            return user



user = RegisterForm()

def register(request):
    if request.method == 'POST':
        form = user(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            messages.success(request, f'Account created for {username}!')
            return redirect('blog-home')
    else:
        form = user
    return render(request, 'users/register.html', {'form': form})


Вот весь код ошибки:

Internal Server Error: /register/
Traceback (most recent call last):
   File "/home/marcel/.virtualenvs/django/lib/python3.7/site-packages   /django/core/handlers/exception.py", line 34, in inner
     response = get_response(request)
   File "/home/marcel/.virtualenvs/django/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
     response = self.process_exception_by_middleware(e, request)
    File "/home/marcel/.virtualenvs/django/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
     response = wrapped_callback(request, *callback_args, **callback_kwargs)
    File "/home/marcel/website/users/views.py", line 45, in register
form = user(request.POST)

TypeError: объект 'RegisterForm' не может быть вызван

1 Ответ

2 голосов
/ 21 мая 2019
user = RegisterForm() // remove this

def register(request):
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            messages.success(request, f'Account created for {username}!')
            return redirect('blog-home')
    else:
        form = RegisterForm()
    return render(request, 'users/register.html', {'form': form})

то, что вы сделали, называется созданием объекта, user var - это объект, а не FORM, поэтому ошибка

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