labokgs
@labokgs (Tomoya K)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ユーザー個人のサイトを表示するようにしたい

解決したいこと

Djangoで簡単なWebアプリケーションを作成してデプロイしたのですが、会員登録をしてログインをするとどのユーザーアカウントでも他のアカウントの投稿を見ることができてしまいます。
Djangoのどの機能を実装すれば、ユーザー別のアプリケーションにすることができるのでしょうか?

0

2Answer

Qiitaのマイページのように、自分専用のページを作る感じですかね。

ユーザーモデルとtodoをForeignKeyで紐付けします。

models.py
class User(models.Model):
    name = models.CharField(max_length=10, unique=True)
    ...

class Todo(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=140)
    ...

request.userでログインしている自分自身のオブジェクトを取得し、todo_set.all()でrequest.userに紐付いたtodoを取得します。

views.py
def mypage(request):
    user = request.user
    todo_list = user.todo_set.all()
    # todo_list = Todo.objects.filter(user=user)
    # 他に必要な処理
    context = {
        'user': user, 'todo_list': todo_list,
    }
    return render(request. 'app/mypage.html', context)
mypage.html
<h2>{{ user.name }}さんのtodo</h2>
<ul>
{% for todo in todo_list %}
    <li>{{ todo }}</li>
{% endfor %}
</ul>

こんな感じでしょうか。

mypageには自分自身(ログインしているユーザー)の情報のみ表示されます。

1Like

Comments

  1. @labokgs

    Questioner

    丁寧に解説いただきありがとうございます。

    foreign keyについて、聞いたことはあったのですがよく理解できていなかったので実際に試してみます!
    ありがとうございました!

イメージできてないのですが、ユーザー専用のページを作りたいという事でしょうか?

既存のSNS等で例えると伝わりやすいかもしれません。

0Like

Comments

  1. @labokgs

    Questioner

    コメントしていただきありがとうございます。

    Todoリストやカレンダーアプリのように、ユーザー個人のサイトを作りたいと思ってます。Todoリストの場合、自分が作ったTodoは当然他のユーザーには見れないと思います。

    今は会員登録をしてログインを行わないと、サイトに入ることはできないのですが、
    ログインをすれば他のユーザーの投稿も全部見れるようになってしまっています。

    ユーザー個人のサイトを作るためにはどうすればいいのでしょうか?

Your answer might help someone💌