Python网址模板标签仅提供绝对网址的一部分.. ..只是缺乏睡眠

时间:2010-01-22 17:57:42

标签: django django-templates django-urls

我必须患严重的睡眠不足,但我很难过。我似乎无法弄清楚如何让{% url %}指令给我正确的网址。所以让我们从基础开始..

urls.py

from people.views import employee_detail

urlpatterns = patterns("",
    url(r'/uid/(?P<id>[0-9]+)/$', employee_detail, {'template_name' : 'people/single.html'}, name = 'employee_view'),
)

views.py

from django.shortcuts import render_to_response, get_list_or_404
from django.template import RequestContext
from people.models import Employee, OfficeLocation

def employee_detail(request, id, template_name = None):
    """
        This will give you a full detailed information on a user
        based off of there name.
    """
    person = Employee.objects.get(id = id)        
    return render_to_response(template_name, _getDetail(person),
                              context_instance = RequestContext(request))

最后,这是我people/single.html的示例摘要。

人/ single.html

<tr>
<td width="300px">Supervisor: <a href="{% url employee_view , id=supervisor_id %}">{{ supervisor }}</a></td> </tr>

现在我可以看到我来回传递正确的数据。例如,这结果 在代码中的链接

<td width="300px">Supervisor: <a href="//uid/415/">NAME</a></td>

现在我做错了什么..我错过了网址的主机名部分.. 有人可以告诉我如何找回“http://127.0.0.1:8000/uid/415”或者主机名是什么?

Grr ..这一定很简单,我知道我正在遭遇睡眠......

1 个答案:

答案 0 :(得分:2)

get_absolute_url用词不当,永远不会返回绝对(方案+主机名+端口)部分。对于这方面的事情,您需要使用Sites framework(使用Site.objects.get_current())并分别获取域名等。

该方法的命名引起了Simon Willison has proposed replacing it entirely的充分关注。