🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

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

Python 3.x

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

2回答

1573閲覧

【Django3】ログイン機能実装について、loginページが表示できない

退会済みユーザー

退会済みユーザー

総合スコア0

Django

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

Python 3.x

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

0クリップ

投稿2021/03/11 02:43

編集2021/03/11 02:46

こんにちは。
Djangoのログイン機能実装に向けて学習しているのですが、
解決できない部分がありましたので、ご助力をしていただきたく、質問しました。

下記情報で不足などありましたら、コメント記載お願い致します。

前提・実現したいこと

【目的】
ログイン画面を表示させたい。
(localhost:8000/login/画面が表示できるようにしたい。)

【環境】
環境は以下のようになっています。

python

1# 階層は以下のようになっています。 2 3manage_pj # (プロジェクト名) 4 ├ manage.py 5 ├ db.sqlite3 6 ├ loginfunction # 今回作成しているlogin用のアプリ 7 ├ manage_apps # settings.pyなどがあるところ 8 └ manager # その他アプリ 9

python

1# loginfunctionの階層についてtemplateの部分を記載 2loginfunction 3 ├ template 4 ├ loginfunction 5 │ ├ index.html 6 │ ├ login.html 7 │ ├ password_change_done.html 8 │ ├ # 以下パスワード設定関連のHTMLファイルが複数 910 ├ _form.html 11 └ base.html

こちらを参照しながら、作成を進めています。
(エラーが出たのは、このページの最終確認工程でです。)

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

イメージ説明
上図のような画面が、ローカルサーバーにアクセスしたときに表示されます。
また、この画面下には
イメージ説明2
とも表示されています。

該当のソースコード

settings.py

python

1 2# INSTALLED_APPSには、今回のlogin機能用にアプリをloginfunctionという名で追記しています。 3INSTALLED_APPS = [ 4 'django.contrib.admin', 5 'django.contrib.auth', 6 'django.contrib.contenttypes', 7 'django.contrib.sessions', 8 'django.contrib.messages', 9 'django.contrib.staticfiles', 10 "manager", 11 "bootstrap4", 12 "loginfunction", # 追加 13] 14 15 16# TEMPLATESはデフォルトのままにしていると思います。 17TEMPLATES = [ 18 { 19 'BACKEND': 'django.template.backends.django.DjangoTemplates', 20 'DIRS': [], 21 'APP_DIRS': True, 22 'OPTIONS': { 23 'context_processors': [ 24 'django.template.context_processors.debug', 25 'django.template.context_processors.request', 26 'django.contrib.auth.context_processors.auth', 27 'django.contrib.messages.context_processors.messages', 28 ], 29 }, 30 }, 31] 32 33

urls.py

python

1from django.contrib import admin 2from django.urls import path, include 3from django.contrib.auth.decorators import login_required # login機能実装に向けて、追記 4 5from django.views.generic import TemplateView # login機能実装に向けて、追記 6 7index_view = TemplateView.as_view(template_name="loginfunction/index.html") 8 9urlpatterns = [ 10 path('admin/', admin.site.urls), 11 path("", login_required(index_view), name="index"), # login機能実装に向けて、追記 12 path("", include("django.contrib.auth.urls")), # login機能実装に向けて、追記 13 path("", include("manager.urls")), # もともとあったmanagerアプリ作成時に記入 14] 15

試したこと

エラーMsgにあるように、Djangoが見に行っているtemplateの参照先が「registration/login.html」になってしまっているのが原因だと思います。
(こちらとしては、「loginfunction/login.html」を見てほしい。)

そのため、settings.pyなどでアプリの追加忘れなど調査してみましたが、
追加忘れはありませんでした。

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

Django : 3.1.7
Python : 3.9.1

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

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

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

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

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

guest

回答2

0

ベストアンサー

とりあえず、同じアプリ名で作成することにしました。

投稿2021/03/12 01:54

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

localhost:8000/login/
でアクセスしたいんですよね?
そうなるとurls.pyが少し違う気がします。

path("", login_required(index_view), name="index"),

これが

path("login/", login_required(index_view), name="index"),

とすることで、localhost:8000/login/にアクセスしたときに画面が開くと思います。
今のままですと、loginの道が見つからないよ!!!ってなってるので、urls.pyに
道を記載する必要があります。

投稿2021/03/11 04:58

setuna0531

総合スコア128

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

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

退会済みユーザー

退会済みユーザー

2021/03/12 01:54

回答ありがとうございます。 ですが、その方法では私の環境では動かなかったようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問