Python url模板标签只给出了绝对url的一部分.. ..一定是睡眠不足

Posted

技术标签:

【中文标题】Python url模板标签只给出了绝对url的一部分.. ..一定是睡眠不足【英文标题】:Python url template tags giving only part of a absolute url.. ..Must be a lack of sleep 【发布时间】:2011-01-08 07:50:52 【问题描述】:

我一定是严重缺乏睡眠,但我很难过。我似乎无法弄清楚如何让% 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 的一个示例 sn-p。

人/single.html

<tr> <td >Supervisor: <a href="% url employee_view , id=supervisor_id %"> supervisor </a></td> </tr>

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

的链接中

&lt;td width="300px"&gt;Supervisor: &lt;a href="//uid/415/"&gt;NAME&lt;/a&gt;&lt;/td&gt;

现在我做错了什么..我缺少 url 的主机名部分..有人可以告诉我如何取回“http://127.0.0.1:8000/uid/415”或任何主机名吗?

Grr.. 这很简单,我知道我睡眠不足..

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

所以我崩溃并使用了站点框架。一旦我完成它,我会给你信用。谢谢!!

以上是关于Python url模板标签只给出了绝对url的一部分.. ..一定是睡眠不足的主要内容,如果未能解决你的问题,请参考以下文章

python Django管理员URL模板标签

样式表不支持模板标签

在视图而不是模板中生成带有 Django 静态 url 的图像标签

无法使用 % url % 模板标签正确生成带有捕获参数的 URL

从模板中获取上一个 URL 的“路径”

Python中url标签使用详解