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

Posted

技术标签:

【中文标题】发现很难在 Django 中使用 href 模板标签【英文标题】:Finding it hard to use a href template tag in Django 【发布时间】: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 % 的链接?在这种情况下,客户端不存在。 【参考方案1】:

自己找到答案了。

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


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

【讨论】:

【参考方案2】:

看起来client 库在您的情况下未定义(我假设您显示的 HTML 位于 clients.html 中)

试试这个:

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

【讨论】:

这是我以前做的。但是当我运行服务器并转到 (r'^orders/edit/(?P\d+)/ 页面时会发生什么,href 链接没有出现。

以上是关于发现很难在 Django 中使用 href 模板标签的主要内容,如果未能解决你的问题,请参考以下文章

让 TTPickerTextField 工作?

如何使用flutter Dropdown小部件从Django REST API端点填充数据

Django模板路径设置:templates,TEMPLATE_DIRS,TEMPLATES

很难在网格单元中显示数字

从一个模板创建多个报告 - 这叫啥?

在 Django 中处理生产迁移和开发迁移