如何链接到Django模板中的另一个用户

时间:2015-05-07 17:10:39

标签: django templates hyperlink model slug

我想链接到其他用户以显示他们的公共活动。

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

这是我的用户个人资料模型:

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之类的内容,以便在模板中使用以链接到其他用户:

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

1 个答案:

答案 0 :(得分:0)

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

建议您现在使用ID,直到找到防止重复的slug名称的方法。

在:

 {% 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