Easily run Django queries and tasks within Jupyter Notebooks in VS Code.
vscode-django-notebook
simplifies the process of initializing Django projects directly in Jupyter Notebook cells. This is particularly useful for quick debugging, querying, and testing in a flexible notebook environment.
- Convenient Django Initialization: Avoid repetitive setup steps in Jupyter Notebooks.
- Interactive Django ORM Access: Use Django models and utilities interactively.
- VS Code Compatible: Tailored for the Jupyter extension in VS Code.
Install the package via pip:
pip install vscode-django-notebook
On the same level as manage.py
, create a folder to organize your Jupyter Notebooks. For example:
your_project/
├── manage.py
├── config/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── notebook/
│ ├── __init__.py
│ └── user.ipynb
- Folder Name : You can name this folder anything you like (e.g.,
notebooks
,playground
,testing
). In this example, we usenotebook
. - Notebook File Name : The notebook file (e.g.,
user.ipynb
) can also have any name, depending on its purpose.
- Open the
user.ipynb
notebook in VS Code. - In the top-right corner of the Jupyter Notebook interface, click on the kernel selection dropdown .
- Choose the Python environment where your Django project dependencies are installed.
-
Install the package:
pip install vscode-django-notebook
-
Add the following code at the top of your notebook to initialize Django:
from vscode_django_notebook import init_django # Initialize Django by specifying the project name init_django(project_name="config")
Replace
"config"
with the name of your Django project module (wheresettings.py
is located).
Once initialized, you can interact with Django models, run complex queries, or debug utilities directly in the notebook. Here's an example:
# Import Django models
from myapp.models import User, Order
# Write and test complex queries
users_with_recent_orders = User.objects.filter(
id__in=Order.objects.filter(date__gte="2024-01-01").values_list("user_id", flat=True)
)
# Inspect the results
print(users_with_recent_orders)
# Utility function to calculate total revenue for a user
def calculate_user_revenue(user_id):
from myapp.models import Order
return Order.objects.filter(user_id=user_id).aggregate(total_revenue=Sum("amount"))["total_revenue"]
# Test the utility
test_user_id = 1
print(f"Total revenue for user {test_user_id}: {calculate_user_revenue(test_user_id)}")
- Interactive Testing : Test Django ORM queries and helper functions interactively.
- Debugging Made Easy : Debug utilities or inspect data before adding them to the project.
- Reusable Code : Refine and reuse tested code in the actual project.
- Jupyter Kernel Not Working : Ensure you’ve selected the correct Python environment in VS Code.
- Initialization Error : Verify that the
project_name
ininit_django()
matches the folder containing yoursettings.py
.
Now you're ready to streamline your Django development workflow using Jupyter Notebooks! 🚀