Я изменил свой 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' не может быть вызван