Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Typehinting package for django

Project description

Django_hint is a module to help you type hint your django project to work with different IDEs.

Notice: Python3.6 or later is required for this module

Installation

You can use the pip to install django_hint

pip3 install django_hint

Usage

The following use cases can be type hinted using django_hint to help your IDE recognize the type of variable.

  1. Database QuerySet
  2. WSGIRequest
  3. Django-Rest-Framework Token Authentication
  4. Model Class

As a bonus, all of the native python type hints such as List, Union, Optional etc. from typing module can be imported from django_hint

Database QuerySet

It is used to hint that the variable is an QuerySet object containing multiple objects whose nature we will determine.
You need to hint it to QueryType and pass the object type inside the []. Example:

from django_hint import QueryType

sample_query: QueryType[SampleModel] = SampleModel.objects.filter(name='sample')

The sample_query variable will be treated as a QuerySet. While looping through the objects, each object will be treated as a SampleModel

WSGIRequest

It is used to hint the nature of the request argument of the view (both function and class based). The request will be treated as a HttpRequest having the user variable attached to it. Example:

from django_hint import RequestType

def sample_view(request: RequestType):
    if request.user.is_authenticated:
        print(request.POST.get('data'))

Django-Rest-Framework Token Authentication

If you are using the token authentication of the Django-Rest-Framework, the request object will have a user variable and an auth variable of rest_framework.authtoken.models.Token instance. DRFTokenRequestType will hint the IDE of those two variables.

from django_hint import DRFTokenRequestType

def sample_view(request: DRFTokenRequestType):
    print(request.auth.key)

Model Class

Django adds a few attributes to a Model instance which are not available in the models.Model and will not be available in your IDE. The most notable attribute is the Manager which is accessible via an attribute called objects.
To include these attributes in your IDE, You have to extend your model to the StandardModelType class of django_hint as well as models.Model and use it just like any other model class.
Note that StandardModeltype will NOT have any effect on your database and will NOT make new migrations on makemigrations command.

from django.db import models
from django_hint import StandardModelType

class SampleModel(models.Model, StandardModelType):
    """Just like any other model"""
    pass

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-hint, version 0.1.5
Filename, size File type Python version Upload date Hashes
Filename, size django_hint-0.1.5-py3-none-any.whl (7.0 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size django_hint-0.1.5.tar.gz (4.2 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page