前提
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
1LANGUAGE_CODE = "ja" 2 3TIME_ZONE = "Asia/Tokyo" 4 5LOGIN_URL = "account:login" 6 7LOGIN_REDIRECT_URL = "account:home" 8 9LOGOUT_REDIRECT_URL = "account:top" 10 11USE_I18N = True 12 13USE_TZ = True 14 15 16# Static files (CSS, JavaScript, Images) 17# https://docs.djangoproject.com/en/4.1/howto/static-files/ 18 19STATIC_URL = "static/" 20 21STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),) 22 23# Default primary key field type 24# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field 25 26DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" 27 28AUTH_USER_MODEL = 'account.SyainMaster'
login.html
html
1{% extends "account/base.html" %} 2{% block title %}ログイン{% endblock %} 3 4{% block content %} 5<div class="container"> 6 <div class="head"> 7 <header> 8 <a class="headmoji">スケジュールアプリ</a> 9 </header> 10 </div> 11 <p>{{message}}</p> 12 <form action="{% url 'account:login'%}" method="post"> 13 {% csrf_token %} 14 {{ form.as_p }} 15 <p><input type="hidden" name="next" value="{{next}}"></p> 16 <p><input type="submit" value="ログイン"></p> 17 </form> 18</div> 19{% endblock %}
form.py
python
1class LoginForm(AuthenticationForm): 2 class Meta: 3 model = SyainMaster 4 fields = ['email', 'password']
views.py
Python
1class HomeView(LoginRequiredMixin, TemplateView): 2 3 def get(self, request, *args, **kwargs): 4 if request.POST['post'] == 0: 5 template_name = "account/Yakuinhome.html" <--ここが問題??? 6 else: 7 template_name = "account/Syainhome.html" 8 9 10 def get_context_data(self, **kwargs): 11 content = super().get_context_data(**kwargs) 12 content.update({ 13 'MendanMaster':MendanMaster.objects.all(), 14 }) 15 16 return content 17 18 19class LoginView(LoginView): 20 """ログインページ""" 21 form_class = forms.LoginForm 22 template_name = "account/login.html"
urls.py
Python
1from django.urls import path 2 3from . import views 4 5 6app_name="account" 7urlpatterns = [ 8 9 path("", views.LoginView.as_view(), name="login"), 10 path("", views.LogoutView.as_view(), name="logout"), 11 path("home/", views.HomeView.as_view(), name="home"), 12 path("sakusei/", views.CreateMendanView.as_view(), name="sakusei"), 13 path("itiran/", views.sakusei_view, name="itiran"), 14 path("Ysyousai/",views.SyousaiMendanView.as_view(), name="Ysyousai"), 15 path("Ysyousai_K/",views.Syousai_K_MendanView.as_view(), name="Ysyousai_K" ), 16 path("Syozoku/",views.SyozokuView.as_view(), name="Syozoku"), 17 path("Select/",views.SelectTimeView.as_view(), name="Select"), 18 path("Ssyousai/",views.SyainSyousaiMendanView.as_view(), name="Ssyousai"), 19 path("Ssyousai_K/",views.SyainSyousai_K_MendanView.as_view(), name="Ssyousai_K" ), 20 21]
回答1件
あなたの回答
tips
プレビュー