Сложно использовать тег шаблона href в Django - PullRequest
0 голосов
/ 26 января 2011

Кажется, у меня возникли некоторые трудности при попытке использовать тег шаблона href. Вот что я хочу сделать.

У меня есть форма для редактирования заказа на

(r'^orders/edit/(?P<order_no>\d+)/$', views.edit_order),

Мне нужна ссылка, которая может привести меня к этому HTML-шаблону items.html. Я назову этот URL

(r'^orders/edit/add_items/(?P<client_id>)/$', views.add_items),

И мои взгляды выглядят так.

@login_required
def add_items(request, client_id = 0):
    client = None
    items = None
    try:
        client = models.Client.objects.get(pk = client_id)
        items = client.storageitem_set.all()
    except:
        return HttpResponse(reverse(return_clients))
    return render_to_response('items.html', {'items':items, 'client':client}, context_instance = RequestContext(request))

@login_required
def return_clients(request):
    clients = models.Client.objects.all()
    return render_to_response('clients.html', {'clients':clients}, context_instance = RequestContext(request))

В моем шаблоне формы редактирования заказа у меня есть это.

<a href="{% url tiptop.views.add_items client.pk %}">Add Item</a>

Теперь, когда я перезагружаю свой сервер, я нажимаю на ссылку и почему-то перехожу на эту страницу.

/ orders / edit / add_items //

Я думаю, что мне может понадобиться цикл for, но по какой-то причине, когда я попытался это сделать, href исчез.

РЕДАКТИРОВАТЬ: Я положил в views.edit_order

client = models.Client.objects.all()

и в шаблоне edit_order

{% for c in client %}
        <a href="{% url tiptop.views.add_items client.pk %}">{{c.name}}</a><br />
{% endfor %}

При повторном запуске сервера отображаются все имена клиентов, но, как и прежде, все ссылки клиентов снова переходят на / Заказы / редактировать / add_items //

Ответы [ 2 ]

1 голос
/ 28 января 2011

Сам нашел ответ.

def edit_order(request, order_no):
# some code 
    name = order.contact.client


<a href="{% url tiptop.views.client_items name.pk %}">Add Item</a>
0 голосов
/ 26 января 2011

Похоже, что client библиотека в вашем случае не определена (я предполагаю, что показанный вами HTML находится в clients.html)

Попробуйте это:

{% for client in clients %}
    <a href="{% url tiptop.views.add_items client.pk %}">Add Item</a><br />
{% endfor %}
...