だから、私はユーザーページを作成しようとしています.そのURLはそのユーザー名に関連付けられます.
そのページでは、そのユーザー (ここでは「ロビン」) がアップロードしたすべての写真をテンプレートに表示したいと考えています。もう 1 つのことは、メニュー バーに request.user のプロファイル ページへのリンクがあることです。つまり、ログインしているユーザーです。ユーザーが「kevin」であると仮定すると、request.user の URL にもリダイレクトされます。お気に入り:
どういうわけか、私は目的の出力を得ることができました。しかし、私が望んでいたのは、URLをrequest.userの名前以外に変更しても、request.userと他のユーザー名を簡単に区別して、テンプレートで操作できるようにすることでした。そして、うまくいけば、この解決策にたどり着きました。
しかし、これが適切な解決策であるかどうかは本当にわかりません。ユーザー名を request.user 以外に変更して、そのすべての情報を考え出すとどうなるでしょうか。それを行うより良い方法はありますか?
test.html:
<body>
<div>
<ul>
<li><a href="/photo/">Photos</a></li>
<li><a href="/accounts/profile/{{user_1}}/">{{user_1.username}}</a></li>
</ul>
</div>
<div id="wrapper">
{% block content %}
{% endblock %}
</div>
</body>
profile_page.html:
{% extends 'test.html' %}
{% block content %}
<p>{{user.username}}</p>
<div id="container">
{% for photo in photos %}
<img src="{{MEDIA_URL}}{{photo.image}}" width="300px" />
{% endfor %}
</div>
{% endblock %}
models.py:
class Photo(models.Model):
title = models.CharField(max_length=200)
image = models.ImageField(upload_to=get_upload_file_name, blank=True)
pub_date = models.DateTimeField(default=datetime.now)
creator = models.ForeignKey(User, related_name="creator_set")
likes = models.ManyToManyField(User, through="Like")
class Meta:
ordering = ['-pub_date']
verbose_name_plural = ('Photos')
def __unicode__(self):
return self.title
アプリの urls.py:
url(r'^profile/(?P<username>\w+)/$', 'userprofile.views.profile_page'),
ビュー.py:
@login_required
def profile_page(request, username):
if request.user.is_authenticated:
user_1 = request.user
user = User.objects.get(username=username)
user_photos = user.creator_set.all()
return render(request, 'profile_page.html', {'user':user,'photos':user_photos, 'user_1':user_1})