webのトップページを作成した時によく使用するコードです。
現在のページでユーザーがログイン中なのか非ログイン中なのかをいちいちviews側で判定させるのではなく、djangoのテンプレート(html)側でシンプルにユーザーががログイン中かAnonymousUser(非ログインユーザー)か判定することができます。
コンテンツ
環境
・python 3.8
・django 2.2
やりたいこと
リンクにアクセスした時に
- ログイン中ではない時は、ログインと新規登録の画面が表示される
- ログイン中の時は、ログイン中のユーザーの名前が表示される
非ログイン時の画面
ログイン中の画面
テンプレート処理
わざわざviews.pyに処理を行う必要はありません。
便利なテンプレートメソッドが用意されています。
それがこちらです。
1 |
request.user.is_anonymous |
読んでコードの如くですが、それを用いたhtmlコードを紹介します。
sample.html
1 2 3 4 5 6 |
{% if request.user.is_anonymous %} <li><a href="{% url 'corporate:signin' %}">ログイン</a></li> <li><a href="{% url 'corporate:signup' %}">新規登録</a></li> {% else %} <li><a href="/"><span>{{ request.user }}さん</span></a></li> {% endif %} |
- 1-3行目でifのテンプレートタグで条件を設定。サーバーにrequestしてきたuserがanonymousの場合は、liタグを使用して、ログインと新規登録 画面を表示させます。
- 4-5行目はサーバーにrequestしてきたuserがanonymous以外のユーザーに対する処理を書いています
これだけでログイン中か非ログイン中か棲み分けができるなんてやっぱりdjangoは便利ですね!!
最後に
いかがでしたでしょうか。
以上が、「【django】テンプレートでユーザーががログイン中かAnonymousUser(非ログイン)か判定する」の紹介記事になります。
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する
2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。
コメントを残す