所以,我正在尝试创建一个用户页面,它的 url 将与其用户名相关联,就像这样
在该页面中,我希望该用户(此处为“robin”)上传的所有照片都显示在模板中。另一件事是,在菜单栏中,有一个指向request.user的个人资料页面的链接,即登录用户,假设用户是'kevin',它也会将其定向到request.user的url像:
不知何故,我设法获得了所需的输出。但我还想要的是,即使我将 url 更改为不同于 request.user 的名称,我希望 request.user 和其他用户名能够轻松区分,以便我可以在模板中操作它们。所以我希望有这个解决方案。
但我真的不知道这是一个合适的解决方案。因为如果我将用户名更改为 request.user 以外的其他名称并提供其所有信息会怎样。有更好的方法吗?
测试.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 %}
模型.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})