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

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

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

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

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

解決済

Djnagoでログインした後の遷移先を変えたい

Colton
Colton

総合スコア10

Django

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

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1回答

0評価

0クリップ

124閲覧

投稿2022/09/23 02:58

前提

Djangoでスケジュール調整Webアプリを作っています。
https://qiita.com/knakajima3027/items/34b2a105da7cdb411736
ここを参考にログイン機能を作りました。

実現したいこと

Djangoでログインした際に、データベースにあるユーザー情報を取得して、取得したデータによって
遷移先を変えたいです。

まずWebアプリにアクセスするとログイン画面が表示され、メアドとパスワードを入力しログインします。

そこで、ログインしたユーザーのユーザー情報を参照し、役職レコードがあるのでそこを見て、
役員(0)だったら、役員用のページ 平社員(1)だったら 平社員用のページ という感じです。

ログイン用アカウントのデータベースの中身

メールアドレス:yakuin@xxxxx.co.jp
Code:    1000(プライマリキー)
Name:   役員1 (その人の名前)
Post:    0 (0:役員、1:社員)
Belong:   0000 (その人の部署)

setting.py

python

LANGUAGE_CODE = "ja" TIME_ZONE = "Asia/Tokyo" LOGIN_URL = "account:login" LOGIN_REDIRECT_URL = "account:home" LOGOUT_REDIRECT_URL = "account:top" USE_I18N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.1/howto/static-files/ STATIC_URL = "static/" STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),) # Default primary key field type # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" AUTH_USER_MODEL = 'account.SyainMaster'

login.html

html

{% extends "account/base.html" %} {% block title %}ログイン{% endblock %} {% block content %} <div class="container"> <div class="head"> <header> <a class="headmoji">スケジュールアプリ</a> </header> </div> <p>{{message}}</p> <form action="{% url 'account:login'%}" method="post"> {% csrf_token %} {{ form.as_p }} <p><input type="hidden" name="next" value="{{next}}"></p> <p><input type="submit" value="ログイン"></p> </form> </div> {% endblock %}

form.py

python

class LoginForm(AuthenticationForm): class Meta: model = SyainMaster fields = ['email', 'password']

views.py

Python

class HomeView(LoginRequiredMixin, TemplateView): def get(self, request, *args, **kwargs): if request.POST['post'] == 0: template_name = "account/Yakuinhome.html" <--ここが問題??? else: template_name = "account/Syainhome.html" def get_context_data(self, **kwargs): content = super().get_context_data(**kwargs) content.update({ 'MendanMaster':MendanMaster.objects.all(), }) return content class LoginView(LoginView): """ログインページ""" form_class = forms.LoginForm template_name = "account/login.html"

urls.py

Python

from django.urls import path from . import views app_name="account" urlpatterns = [ path("", views.LoginView.as_view(), name="login"), path("", views.LogoutView.as_view(), name="logout"), path("home/", views.HomeView.as_view(), name="home"), path("sakusei/", views.CreateMendanView.as_view(), name="sakusei"), path("itiran/", views.sakusei_view, name="itiran"), path("Ysyousai/",views.SyousaiMendanView.as_view(), name="Ysyousai"), path("Ysyousai_K/",views.Syousai_K_MendanView.as_view(), name="Ysyousai_K" ), path("Syozoku/",views.SyozokuView.as_view(), name="Syozoku"), path("Select/",views.SelectTimeView.as_view(), name="Select"), path("Ssyousai/",views.SyainSyousaiMendanView.as_view(), name="Ssyousai"), path("Ssyousai_K/",views.SyainSyousai_K_MendanView.as_view(), name="Ssyousai_K" ), ]

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2022/09/23 03:32

>Djangoでログインした際に そもそもログインってDBにあるユーザ情報と照合するので 「ログイン」時点でユーザ情報取得できてるのでは。
Colton

2022/09/23 03:33

できてないんですよね..... どうやったら遷移先をわけられるんでしょうか...
m.ts10806

2022/09/23 07:13

では、まずログイン画面で入力された入力内容からDBを検索するところから。 それができれば検索結果のユーザ情報を見てリダイレクト もしくは、同じテンプレートファイルでも分岐により出力内容を変える。セッションも必要です。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Django

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

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。