我是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按预期工作?
答案 0 :(得分:0)
引用OP的评论:
我更新到1.7.1,现在一切正常。