質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

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

Python

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

Q&A

0回答

962閲覧

django.contrib.authが使えない

Kosen

総合スコア33

Django

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

Python

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

0グッド

0クリップ

投稿2021/05/30 04:33

前提・実現したいこと

django.contrib.authを利用してアカウント周りの実装を行いたいです。
adminではなく、authの処理を実行したいです。

発生している問題・エラーメッセージ

<a href=“{% url ‘password_change’ %}“>パスワードの変更</a>の遷移先がなぜかdjang.contrib.authのpassword_changeではなく、adminのpassword_changeに遷移してしまう。
また、password_changeだけでなく他の機能もadminになってしまうが、loginのみadminに遷移しない。

該当のソースコード

config/urls.py

python

1urlpatterns = [ 2 path('', include('app.urls')), 3 path('accounts/', include('django.contrib.auth.urls')), 4 path('admin/', admin.site.urls), 5]

templates/registration/subnav.html

python

1<ul class="list-group list-group-flush"> 2 <li class="list-group-item"><a href="{% url 'app:profile' %}">プロフィール</a></li> 3 <li class="list-group-item"><a href="{% url 'password_change' %}">パスワードの変更</a></li> 4 <li class="list-group-item"><a href="{% url 'logout' %}">ログアウト</a></li> 5 <li class="list-group-item"><a href="{% url 'app:delete-confirmation' %}">退会</a></li> 6</ul>

templates/registration/password_change_form.html

python

1{% extends "registration/base.html" %} 2 3{% load bootstrap4 %} 4 5{% block content %} 6<form action="" method="POST"> 7 {% bootstrap_form form layout='' %} 8 <button type="submit" class="btn btn-primary">変更する</button> 9 {% csrf_token %} 10</form> 11{% endblock %}

models/user.py

python

1from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, UserManager 2from django.db import models 3from django.core.mail import send_mail 4from django.utils import timezone 5import uuid 6 7class UserManager(UserManager): 8 def _create_user(self, email, password, **extra_fields): 9 email = self.normalize_email(email) 10 user = self.model(email=email, **extra_fields) 11 user.set_password(password) 12 user.save(using=self._db) 13 return user 14 15 def create_user(self, email, password=None, **extra_fields): 16 extra_fields.setdefault('is_staff', False) 17 extra_fields.setdefault('is_superuser', False) 18 return self._create_user(email, password, **extra_fields) 19 20 def create_superuser(self, email, password, **extra_fields): 21 extra_fields.setdefault('is_staff', True) 22 extra_fields.setdefault('is_superuser', True) 23 24 if extra_fields.get('is_staff') is not True: 25 raise ValueError('Superuser must have is_staff=True.') 26 if extra_fields.get('is_superuser') is not True: 27 raise ValueError('Superuser must have is_superuser=True.') 28 return self._create_user(email, password, **extra_fields) 29 30class User(AbstractBaseUser, PermissionsMixin): 31 id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 32 email = models.EmailField(unique=True) 33 name = models.CharField(max_length=50) 34 icon_tag = models.PositiveSmallIntegerField(default=0) 35 bio = models.CharField(max_length=300, null=True) 36 is_staff = models.BooleanField(default=False) 37 is_active = models.BooleanField(default=True) 38 created_at = models.DateTimeField(default=timezone.now) 39 valid = models.BooleanField(default=True) 40 date_joined = models.DateTimeField(default=timezone.now) 41 42 objects = UserManager() 43 44 EMAIL_FIELD = 'email' 45 USERNAME_FIELD = 'email' 46 REQUIRED_FIELDS = [] 47 48 def clean(self): 49 super().clean() 50 self.email = self.__class__.objects.normalize_email(self.email) 51 52 def email_user(self, subject, message, from_email=None, **kwargs): 53 """Send an email to this user.""" 54 send_mail(subject, message, from_email, [self.email], **kwargs)

試したこと

こちらのページを参考に実装しました。

補足情報(FW/ツールのバージョンなど)

authのurlはこちらで設定されています。
python: 3.7.2
Django: 3.2.3
django-bootstrap4: 3.0.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問