{"id":21172,"library":"django-zen-queries","title":"django-zen-queries","description":"A Django library for explicit control over query execution, preventing accidental database queries in production code. Current version 2.1.0, requires Python >=3.6 and Django >=2.0. Actively maintained with minor releases.","status":"active","version":"2.1.0","language":"python","source_language":"en","source_url":"https://github.com/dabapps/django-zen-queries","tags":["django","database","queries","performance","testing"],"install":[{"cmd":"pip install django-zen-queries","lang":"bash","label":"Standard install"}],"dependencies":[{"reason":"Requires Django >=2.0 for database instrumentation API","package":"Django","optional":false}],"imports":[{"note":"Most common import style is to import the module and use zen_queries.queries_disabled() etc.","wrong":"from zen_queries import ...","symbol":"zen_queries","correct":"import zen_queries"},{"note":"Use fetch() to force execution of a queryset within a disabled block.","wrong":"from django.db import connections; ...","symbol":"fetch","correct":"from zen_queries import fetch"}],"quickstart":{"code":"import zen_queries\nfrom django.db import connection\n\nwith zen_queries.queries_disabled():\n    # Any query executed here will raise an error\n    # pass\n\n# Or use as a decorator on a function\n@zen_queries.queries_disabled()\ndef my_view(request):\n    # Queries disabled inside\n    pass","lang":"python","description":"Basic usage: context manager or decorator to disable queries, raising an error if any query is attempted."},"warnings":[{"fix":"Upgrade to Django 2.0+ and django-zen-queries 2.0.0+.","message":"Version 2.0.0 changed the internal implementation from monkeypatching to Django's Database Instrumentation API. Requires Django >=2.0. Django <2.0 is no longer supported.","severity":"breaking","affected_versions":"<2.0.0"},{"fix":"Use zen_queries.TemplateResponse instead of Django's TemplateResponse in class-based views, or evaluate permissions outside templates.","message":"Template permission checks (e.g., {% if perms %}) may trigger database queries even inside a queries_disabled block, because they are evaluated during template rendering. This can cause unexpected errors.","severity":"gotcha","affected_versions":"all"},{"fix":"Wrap template rendering with {% queries_disabled %} in templates or use zen_queries.TemplateResponse.","message":"The context manager does not automatically disable queries in template rendering. Use zen_queries.TemplateResponse or the {% queries_disabled %} template tag (added in 2.1.0) to cover templates.","severity":"gotcha","affected_versions":">=2.1.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Identify the query and either move it outside the context or use `fetch()` to explicitly allow a prefetch or specific query.","cause":"A database query was executed inside a `queries_disabled()` context.","error":"AssertionError: Database queries disabled inside a queries_disabled context"},{"fix":"Ensure you have installed django-zen-queries 1.0+ and use `zen_queries.queries_disabled()`.","cause":"Using an older version (pre-1.0?) or incorrect import; the API was renamed.","error":"AttributeError: module 'zen_queries' has no attribute 'queries_disabled'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}