Теги шаблона Python url, дающие только часть абсолютного URL .. .. Должно быть недостаток сна - PullRequest
2 голосов
/ 22 января 2010

Я, должно быть, страдаю от серьезного недосыпания, но я в тупике.Я не могу понять, как получить директиву {% url %}, чтобы дать мне правильный 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.

people / single.html

<tr><br> <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>

Теперь, что я делаю не так ... Я пропускаю часть имени узла в URL .. Может кто-нибудь, пожалуйста, скажите мне, как вернуться "http://127.0.0.1:8000/uid/415" или каково бы ни было имя хоста?

Grr .. Это должно быть просто, я знаю, что страдаю отлак сна ..

1 Ответ

2 голосов
/ 22 января 2010

get_absolute_url является неправильным и никогда не возвращает абсолютную часть (схема + имя хоста + порт). Для этого вам необходимо использовать Sites Framework (используя Site.objects.get_current () ) и получить домен и т. Д. Отдельно.

Наименование метода вызвало у многих удивление, и Саймон Уиллисон предложил заменить его полностью .

...