如何在 Django 模板中 link 给另一个用户

How to link to another user in Django template

我想 link 向其他用户展示他们的 public 活动。

但我不知道如何通过模板link它。

这是我的用户配置文件模型:

class UserProfile(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=64)
location = models.CharField(max_length=64, default='Tehran')
picture = models.ImageField(upload_to='profile_images', blank=True, default="/user_image/user_default.png")
slug = models.SlugField()

def save(self, *args, **kwargs):
    self.slug = slugify(self.user)
    super(UserProfile, self).save(*args, **kwargs)

# Override the __unicode__() method to return out something meaningful!
def __unicode__(self):
    return self.user.username


User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

但我不能使用 slug 因为在用户完成他们的配置文件之前它没有为用户配置文件定义。

请帮我找到类似 slug 的东西,以便在模板中使用 link 给其他用户,像这样:

<a href="{% url "index" user.profile.slug %}">{{ user.profile.name }}</a>

根据您的代码,每次保存用户时都会生成 slug 字段。尽管不建议将其用作用户标识符,因为具有相同用户名的 2 个用户将获得相同的 slug。

在找到防止重复的 slug 名称的方法之前,建议暂时使用 ID。

那个:

 {% url "index" user.profile.slug %}

一旦你有一个接受 slug 参数的 url 就可以使用:

url(r'^(?P<slug>[\w-]+)/$', views.index, name='index')

在 views.index 视图调用中,您可以执行以下操作:

user = User.objects.get(slug=slug)

获取具有关联 slug 的用户