我正在尝试在 url 中使用用户的用户名创建 UserProfileView 。实际上,它以某种方式与实际设置配合使用。问题是,网址中的任何用户名扩展都会重定向到登录用户的个人资料。而且,当我尝试在不登录的情况下进入个人资料时,模板中没有任何信息。这是我的代码,感谢任何帮助。
models.py
class Profile(models.Model):
user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE)
email = models.EmailField(max_length=150)
bio = models.TextField(max_length=280, blank=True)
avatar = models.ImageField(default='default.jpg', upload_to='avatars/')
def __str__(self):
return '@{}'.format(self.user.username)
def save(self):
super().save()
img = Image.open(self.avatar.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size, Image.BICUBIC)
img.save(self.avatar.path)
views.py
class UserProfileView(SelectRelatedMixin, TemplateView):
model = Profile
template_name = 'accounts/profile.html'
select_related = ('user',)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
return context
def get_success_url(self):
return reverse('accounts:profile', kwargs={'user': self.object.user})
urls.py
urlpatterns = [
path('<str:username>/', views.UserProfileView.as_view(), name='profile')
]
profile.html(我如何调用模板中的相关数据)
<h3>{{ user.profile }}</h3>
<p>{{ user.profile.email }}</p>
<p>{{ user.profile.bio }}</p>
<h3>{{ profile }}</h3>
饮歌长啸