Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 每个请求调用两次Django上下文处理器_Python_Django - Fatal编程技术网

Python 每个请求调用两次Django上下文处理器

Python 每个请求调用两次Django上下文处理器,python,django,Python,Django,我只发现了一个这样的主题,里面似乎没有一个答案有效。 我有两个上下文处理器: 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')

我只发现了一个这样的主题,里面似乎没有一个答案有效。 我有两个上下文处理器:

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',
             ]
通过这些print语句,我可以看到每个CP在每个请求中执行两次,尽管我只是渲染
base.html
。有什么问题吗

导入回溯;traceback.print_stack()
给出了两次:

另外,我知道每次使用CP时都会查询数据库,稍后我会添加缓存

Cosole日志(即一页加载):

视图:

项目URL:

urlpatterns = [re_path(r'^',include('shopping.urls',namespace='shop'))]
应用程序的URL:

urlpatterns = [re_path(r'^$',views.HomePageView.as_view(),name='home')]

我不知道这有什么神奇之处,但每页加载两个请求的问题与我的
base.html
中的这行代码有关:

<img src="#" width="30" height="30" class="d-inline-block align-top" alt="">


我一删除它,一切都开始正常工作…

您是否在设置中添加了两次上下文处理器?是否在问题中添加了设置。是否有任何包含标记或任何其他呈现模板的内容(除视图呈现的模板外)?django调试工具栏和“django.template.context_processors.debug”是两个不同的东西。如果显示完整的控制台输出,显示每个请求调用两次上下文处理器,则可能会指示发生了什么;traceback.print_stack()到上下文处理器也可能有助于调试问题。浏览器会将相对url
扩展到
http://example.org/#
,因此浏览器请求
/
尝试加载图像(图像未发送到服务器后的
#
和任何内容)。我明白了。谢谢你的帮助:)
urlpatterns = [re_path(r'^$',views.HomePageView.as_view(),name='home')]
<img src="#" width="30" height="30" class="d-inline-block align-top" alt="">