djangoでユーザー情報を取得して表示してみる
djangoでユーザー情報を取得して表示してみる
djangoでユーザー情報を取得して表示してみたいと思います。
前段階として下のユーザーが登録されていることを前提とします。
MariaDB [app]> select id,username from auth_user;
+----+----------------+
| id | username |
+----+----------------+
| 1 | houdoukyokucho |
| 2 | test_user |
+----+----------------+
urls.py
こちらはいつも通りURLを指定してあげます。
「users/[ユーザーID]」と言うようにGETで「ユーザーID」を渡せるようにしてあげましょう。
app_name = 'app'
urlpatterns = [
path('users/<int:user_id>/', views.users, name='users'),
]
views.py
GETで送信された「ユーザーID」を受け取り、そのパラメータをキーにしてユーザー情報を取得しましょう。
from django.contrib.auth.models import User
def users(request, user_id):
user = get_object_or_404(User, pk=user_id)
context = {
'user': user,
}
return render(request, 'app/users.html', context)
users.html
「{{ user.username}}」と指定してあげることでユーザー名を表示することが出来ます。
{% extends 'app/base.html' %}
{% block content %}
{% load widget_tweaks %}
<div>hello! {{ user.username }}<div>
{% endblock %}
結果
「http://127.0.0.1:81/app/users/1/」にアクセスすると下の通り「ユーザー名」が表示されたのが確認できました。
追記
ちなみにログイン中のユーザーがマイページを開くにはIDをURLに付与してあげないといけません。テンプレートは下のようになります。ログインしていない場合はログインページに遷移するようにしています。
{% if request.user.is_authenticated %}
<li><a href="{% url 'app:users' request.user.id %}">マイページ</a></li>
{% else %}
<li><a href="{% url 'app:login' %}">ログイン</a></li>
{% endif %}
ディスカッション
コメント一覧
まだ、コメントがありません