我发现只有这样一个主题,似乎没有一个答案可以解决。 我有两个上下文处理器:
def cart_view(request):
try:
cart_id = request.session['cart_id']
cart = Cart.objects.get(id=cart_id)
request.session['total'] = cart.items.count()
print('OLD CART USED')
except:
cart = Cart()
cart.save()
cart_id = cart.id
request.session['cart_id'] = cart_id
cart = Cart.objects.get(id=cart_id)
print('NEW CART CREATED')
return {'cart':cart}
# dropdown menu categories to every page
def categories(request):
print('CATEGORIES CONTEXT PROCCESOR')
categories = Category.objects.all()
return {'dropdown_categories':categories}
设置:
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.media',
'shopping.views.cart_view',
'shopping.views.categories',
]
通过这些打印语句,我可以看到每个请求中的每个CP都执行两次,尽管我只是渲染base.html
。可能是什么问题?
import traceback; traceback.print_stack()
给出两次:
P.S。我知道我每次使用CP时都会查询数据库,以后再添加缓存。
Cosole日志(加载一页):
OLD CART USED
CATEGORIES CONTEXT PROCCESOR
[30/Aug/2018 18:56:13] "GET / HTTP/1.1" 200 2651
OLD CART USED
CATEGORIES CONTEXT PROCCESOR
[30/Aug/2018 18:56:13] "GET / HTTP/1.1" 200 2651
查看:
class HomePageView(TemplateView):
template_name = 'base.html'
项目网址:
urlpatterns = [re_path(r'^',include('shopping.urls',namespace='shop'))]
应用的网址:
urlpatterns = [re_path(r'^$',views.HomePageView.as_view(),name='home')]
答案 0 :(得分:0)
好吧,我不是什么魔术,但是每页加载两次请求的问题与我的base.html
中的这一行代码有关:
<img src="#" width="30" height="30" class="d-inline-block align-top" alt="">
我一删除它,一切便开始正常工作...