質問編集履歴

2 言葉を補足

locking

locking score 14

2018/04/26 23:07  投稿

djangoの登録画面で、フォームを埋めているのに「きちんと埋めてください」とでる
djangoのサインアップ画面を独自に定義し、サインアップの際にemailアドレスやアイコン画像が必要なように改良しました。
djangoのサインアップ(ユーザー登録)画面を独自に定義し、サインアップの際にemailアドレスやアイコン画像が必要なように改良しました。
その後自分で適当なユーザー名と画像とパスワード、存在するメールアドレス(gmail)を入力してユーザー登録しようとしたところ、emailアドレスの欄に「この項目は必須です」と出てしまいます。
![![イメージ説明](a14a637ee1ddb38c4df10512a3d10fdb.jpeg)]
なぜ入力しているのに必須ですと出てフォームが送信できないのかわからず、手詰まりになってしまいました。
<追記>
models.py
```python
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, UserManager
from django.contrib.auth.validators import UnicodeUsernameValidator
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from django.core.mail import send_mail
import uuid as uuid_lib
# Create your models here.
class User(AbstractBaseUser, PermissionsMixin):
   """ユーザー AbstractUserをコピペし編集"""
   uuid = models.UUIDField(default=uuid_lib.uuid4,
                           primary_key=True, editable=False)
   username_validator = UnicodeUsernameValidator()
   username = models.CharField(
       _('username'),
       max_length=150,
       unique=True,
       help_text=_(
           'Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
       validators=[username_validator],
       error_messages={
           'unique': _("A user with that username already exists."),
       },
   )
   image = models.ImageField()
   email = models.EmailField(_('email address'), unique=True, help_text='正しいemailアドレスを入力してください')
   
   is_staff = models.BooleanField(
       _('staff status'),
       default=False,
       help_text=_(
           'Designates whether the user can log into this admin site.'),
   )
   is_active = models.BooleanField(
       _('active'),
       default=True,
       help_text=_(
           'Designates whether this user should be treated as active. '
           'Unselect this instead of deleting accounts.'
       ),
   )
   date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
   objects = UserManager()
   EMAIL_FIELD = 'email'
   USERNAME_FIELD = 'username'
   REQUIRED_FIELDS = ['email', 'image']
   class Meta:
       verbose_name = _('user')
       verbose_name_plural = _('users')
   def clean(self):
       super().clean()
       self.email = self.__class__.objects.normalize_email(self.email)
   def email_user(self, subject, message, from_email=None, **kwargs):
       """Send an email to this user."""
       send_mail(subject, message, from_email, [self.email], **kwargs)
```
forms.py
```python
from django import forms
from django.contrib.auth.forms import UserCreationForm
# from django.contrib.auth.models import User
from accounts.models import User
class SignUpForm(UserCreationForm):
   class Meta:
       model = User
       fields = ('username', 'email', 'image', 'password1', 'password2')
```
  • Python

    17981 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • PostgreSQL

    1705 questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

  • Django

    2420 questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • Python 3.x

    13752 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1 題名をわかりやすいように変更

locking

locking score 14

2018/04/26 22:56  投稿

djangoのサインアップ画面で、フォームを埋めているのに必須ですと出
djangoの登録画面で、フォームを埋めているのに「きちんと埋めてください」とで
djangoのサインアップ画面を独自に定義し、サインアップの際にemailアドレスやアイコン画像が必要なように改良しました。
その後自分で適当なユーザー名と画像とパスワード、存在するメールアドレス(gmail)を入力してユーザー登録しようとしたところ、emailアドレスの欄に「この項目は必須です」と出てしまいます。
![![イメージ説明](a14a637ee1ddb38c4df10512a3d10fdb.jpeg)]
なぜ入力しているのに必須ですと出てフォームが送信できないのかわからず、手詰まりになってしまいました。
<追記>
models.py
```python
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, UserManager
from django.contrib.auth.validators import UnicodeUsernameValidator
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from django.core.mail import send_mail
import uuid as uuid_lib
# Create your models here.
class User(AbstractBaseUser, PermissionsMixin):
"""ユーザー AbstractUserをコピペし編集"""
uuid = models.UUIDField(default=uuid_lib.uuid4,
primary_key=True, editable=False)
username_validator = UnicodeUsernameValidator()
username = models.CharField(
_('username'),
max_length=150,
unique=True,
help_text=_(
'Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
validators=[username_validator],
error_messages={
'unique': _("A user with that username already exists."),
},
)
image = models.ImageField()
email = models.EmailField(_('email address'), unique=True, help_text='正しいemailアドレスを入力してください')
is_staff = models.BooleanField(
_('staff status'),
default=False,
help_text=_(
'Designates whether the user can log into this admin site.'),
)
is_active = models.BooleanField(
_('active'),
default=True,
help_text=_(
'Designates whether this user should be treated as active. '
'Unselect this instead of deleting accounts.'
),
)
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
objects = UserManager()
EMAIL_FIELD = 'email'
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email', 'image']
class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')
def clean(self):
super().clean()
self.email = self.__class__.objects.normalize_email(self.email)
def email_user(self, subject, message, from_email=None, **kwargs):
"""Send an email to this user."""
send_mail(subject, message, from_email, [self.email], **kwargs)
```
forms.py
```python
from django import forms
from django.contrib.auth.forms import UserCreationForm
# from django.contrib.auth.models import User
from accounts.models import User
class SignUpForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'email', 'image', 'password1', 'password2')
```
  • Python

    17981 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • PostgreSQL

    1705 questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

  • Django

    2420 questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • Python 3.x

    13752 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る