djangoでユーザー情報を取得して表示してみる

2022年5月3日

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 %}

2022年5月3日