在我的 jinja2 模板中使用 url 作为变量?
Posted
技术标签:
【中文标题】在我的 jinja2 模板中使用 url 作为变量?【英文标题】:Use the url as a variable in my jinja2 template? 【发布时间】:2021-02-03 18:50:12 【问题描述】:是一种在我的模板中使用 slug 的方法吗?
我的网址中有:
path("cats/check/<int:pk>/lista", ObjetoListView.as_view(), name='posesiones_consulta'),
如何将 int:pk 作为变量访问?
我想评价一下:
% if cat.mom.id == pk %
【问题讨论】:
【参考方案1】:你将它传递给上下文:
class ObjectoListView(ListView):
# …
def get_context_data(self, *args, **kwargs):
return super().get_context_data(
*args,
pk=self.kwargs['pk'],
**kwargs
)
如果您想要过滤列表,您应该在数据库级别执行此操作,例如:
class ObjectoListView(ListView):
# …
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(
mom__pk=self.kwargs['pk']
)
在模板中过滤不是一个好主意,因为这样数据库将返回所有条记录,从而增加数据库和应用程序之间的带宽,并且此外,数据库级别的过滤(几乎)总是比视图或模板中的过滤更快。
【讨论】:
谢谢,但是如果我打算使用我的电脑而不是互联网,哪个更快? @TommydoNascimiento:仍然是一个数据库。数据库使用 indexes,因此通常可以在 O(log n) 时间内过滤,而模板/视图将需要线性时间。如果对象的数量增加(1'000+),那么页面需要很长时间才能回答,从而可以看出差异。以上是关于在我的 jinja2 模板中使用 url 作为变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 Sendgrid 事务模板中包含 Jinja2 模板
在 Jinja2 模板引擎中使用 django-widget-tweaks