Python Descriptors

Descriptors are often overlooked part of Python. We are all aware of @property. Descriptors are what power it. So lets take a look at them. Why Descriptors Look at this code:

In this toy example, the getter always capitalizes the name before returning. Now if we wanted to implement exactly same functionality in another […]

Mixins in Django and Django Rest Framework

This is a general post about what mixins are. Mixins are a design pattern found in many languages. In Python, though the language does not support mixins natively,they are implemented using Python’s multiple inheritence model. The mixins are different from inheritence. Inheritence is useful when you want to narrow a scope in the inherited class. […]

Using Pytest with Django and Django Rest Framework

This article is inspired by article here. What is Pytest Pytest is testing framework for Python. Very popular with Django. Killer feature : Fixtures Fixtures are the killer feature of Pytest. Fixtures are functions that run before and after each test, like setUp and tearDown in unitest and labelled pytest killer feature. Fixtures are used […]

Python: Bare asterisk in function arguments?

Adding Custom User model in Django – part 2 (using fixtures)

See part 1 here. In this part we are discussing what to do when we add custom user model later in the project. Note that in this scenario, we are in a very non-ideal situation. To keep unknown surprises at the minimum, we will still delete old database but we will use the concept of […]

Adding AJAX to Python Django projects

A very nice explanation on SO regarding what and why about AJAX from Django perspective: So, specifically in Django, when we use AJAX to do a form POST request, we need a CSRF token. This is a security feature. If we are using Django templates, the templates do the job of generating a csrf […]

Steps for new Python library or package

Here are the steps. Create repo on github with license, gitignore and readme stubs. Clone the repo in the work area. Lets say, my new library is called new-library new-library is the repo name. Inside the cloned repo, create virtual env by running: pipenv install –python 3.8 Above step creates a virtualenv using python 3.8 […]

Django sessions for anonymous users

We know that all logged in users are connected to a session. This is something done for you by Django middlewares. Similarly, for anonymous users (not logged in), every time the server receives a request, django creates a session object (meaning, an object with session_key, session_data and expire_data values). But the catch here is that […]

_set meaning in Django ORM relationship

_set is associated with reverse relation on a model. Django allows you to access reverse relations on a model. By default, Django creates a manager (RelatedManager) on your model to handle this, named <model>_set, where <model> is your model name in lowercase. Excellent link on StackOverflow here: If we have these models:

In […]

Setting active navbar link in Django template

Here is probably the best way to set the active navbar link in Django template. Note, this needs no jQuery/ javascript. Step 1 Create named urls:

Step 2 Create a Navbar template. I keep it stored in a file called navbar.html inside “templates/base” folder. This “templates” folder is at same level as I […]