ユーザー個人のサイトを表示するようにしたい
解決したいこと
Djangoで簡単なWebアプリケーションを作成してデプロイしたのですが、会員登録をしてログインをするとどのユーザーアカウントでも他のアカウントの投稿を見ることができてしまいます。
Djangoのどの機能を実装すれば、ユーザー別のアプリケーションにすることができるのでしょうか?
0
Djangoで簡単なWebアプリケーションを作成してデプロイしたのですが、会員登録をしてログインをするとどのユーザーアカウントでも他のアカウントの投稿を見ることができてしまいます。
Djangoのどの機能を実装すれば、ユーザー別のアプリケーションにすることができるのでしょうか?
Qiitaのマイページのように、自分専用のページを作る感じですかね。
ユーザーモデルとtodoをForeignKeyで紐付けします。
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を取得します。
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)
<h2>{{ user.name }}さんのtodo</h2>
<ul>
{% for todo in todo_list %}
<li>{{ todo }}</li>
{% endfor %}
</ul>
こんな感じでしょうか。
mypageには自分自身(ログインしているユーザー)の情報のみ表示されます。
@labokgs
Questioner
イメージできてないのですが、ユーザー専用のページを作りたいという事でしょうか?
既存のSNS等で例えると伝わりやすいかもしれません。
@labokgs
Questioner