【发布时间】:2011-01-26 13:41:19
【问题描述】:
我似乎在尝试使用 href 模板标签时遇到了一些困难。这就是我想要做的。
我有一个编辑订单表格
(r'^orders/edit/(?P<order_no>\d+)/$', views.edit_order),
我想要一个可以将我带到这个 html 模板 items.html 的链接 我会命名这个网址
(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//
【问题讨论】:
-
你的链接是在clients.html还是items.html中?
-
链接在编辑订单表单 (edit_order.html) 中,其中应该有指向此模板 (items.html) 的链接
-
呈现
edit_order.html的视图是什么?上下文中是否有client变量? -
我查看了呈现编辑顺序的视图。没有客户端变量。
-
如果没有客户端变量,您的编辑订单将如何显示指向 {% url tiptop.views.add_items client.pk %} 的链接?在这种情况下,客户端不存在。
标签: django url tags views django-templates