很难在Django中使用href模板标签

最后发布: 2011-01-26 13:41:19


问题

尝试使用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 %}

再次运行服务器时,这将显示所有客户端名称,但就像在所有客户端链接再次转到/ orders / edit / add_items //之前一样

django url tags views django-templates
回答

自己找出答案。

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


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


回答

看起来您的client库是未定义的(我假设您显示的HTML位于client.html中)

尝试这个:

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