【发布时间】:2020-12-30 01:45:37
【问题描述】:
我正在尝试创建一个电子商务应用并在其中包含购物车选项。但是,在网站的每个页面(或每个视图)上,我总是输入代码...
context = {
"no_in_cart":no_of_items_in_cart(request)
}
no_of_items_in_cart 是一个查找购物车中商品数量的函数。
但我觉得这是对代码的浪费,可能有几个低效率的地方。
而且我不确定如何通过auth_views 发送此代码,例如登录或注册视图。
任何帮助将不胜感激。 谢谢!
编辑内容
所以现在在我的 tag_name.py 我有代码..
from django import template
register = template.Library()
@register.inclusion_tag("base.html")
def a_tag_name(request):
return {"no_in_cart":no_of_items_in_cart(request)}
def no_of_items_in_cart(request):
total = 0
for item in request.session.get('order'):
total += item["quantity"]
return (total)
在我的 base.html 中,页面顶部有以下标签...
{% load static %}
{% load tag_name %}
{% a_tag_name request %}
<!DOCTYPE html>
<html lang="en">
<head>
...
而且我不会在任何其他子模板中重复标签{% load tag_name %} 或{% a_tag_name request %}。
但是,这样做会引发错误...
Exception Type: AttributeError
Exception Value:'str' object has no attribute 'session'
它突出显示了{% a_tag_name request %}这一行。
知道如何解决这个问题吗? 谢谢!
【问题讨论】:
-
如果您在视图中编写的行数很少,那么您可以通过多个 url 调用特定视图并通过获取 url 执行不同的任务,然后使用 if else。
标签: python django django-views django-templates tags