所以,我想創建一個用戶頁面,其網址將用戶名,這樣的事情Django的 - 在模板中區分用戶
而且在該頁面相關聯,我希望所有的該用戶上傳的照片(這裏是'robin')將顯示在模板中。另一件事是,在菜單欄中,有一個用於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'),
views.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})
好吧,我更新了視圖爲你的,只是我'user_1'改爲'user_profile'。用user.username,我可以像你說的那樣訪問登錄用戶的配置文件。只是,還有一個問題。當我嘗試request.user.username時,爲什麼它會給我一個錯誤:'NoReverseMatch at/accounts/profile/pica/Reverse'for'profile'with arguments'('',)'and keyword arguments'{}'not found '??? – Robin
@Robin,在模板中不使用'request.user ...'但使用'user.username' – Rohan
request.user depereciated?我什麼時候可以使用它? – Robin