django的user.get_absolute_url在模板中不起作用

时间:2014-12-14 21:24:29

标签: python django django-templates

我是Django的新手,并且在Django内置用户对象中遇到get_absolute_url问题,在模板中使用它。 我正在使用Django 1.7。

所以,这是在models.py:

def get_absolute_url(self):
    return reverse('tests:profile', kwargs={'pk': self.pk})
在urls.py中

url(
    regex=r'^profile/(?P<pk>\d+)',
    view = views.profile,
    name='profile'
)

views.py:

def profile(req, pk):

user = get_object_or_404(models.User, pk=pk)
return render(req, 'accounts/profile.html', {'user': user})

并在模板中

<div class="container">
{% if user.is_authenticated %}
    <a href="{{ user.get_absolute_url }}">{{ user.username }}</a>
    <a href="{% url 'tests:logout' %}">Log out</a>
{% else %}
    <a href="{% url 'tests:login' %}">Log in</a>
    <a href="{% url 'tests:register' %}">Sign up</a>
{% endif %}
{% block content %}
{% endblock %}

在html中href为空。当我使用{%url'tests:profile'user.pk%}时,它运行得非常好,并且在配置文件页面上,当用户对象不是Django的内置但是从我的视图中获取时,get_absolute_url可以工作。从shell中的对象调用get_absolute_url也可以正常工作。

在1.7发行说明中写道:“在您自己的自定义用户对象上定义get_absolute_url()方法,或者如果您想为用户提供URL,请使用ABSOLUTE_URL_OVERRIDES。”

所以我的方法应该工作还是我误解了什么? 如何让内置用户的get_absolute_url按预期工作?

1 个答案:

答案 0 :(得分:0)

引用OP的评论:

  

我更新到1.7.1,现在一切正常。