It takes time to start a Django Project and make it almost production-ready.

Overview

django-setup-cli

Django Setup Cli

GitHub Actions (Tests) codecov

It takes time to start a Django Project and make it almost production ready. A developer needs to spend a lot of time installing required libraries, setup database, setup cache as well as hiding secrets, configure settings file. With the help of django-setup-cli a developer can start an almost production ready project in a minute.

Requirements

python 3.6>

Installation

1. Create a virtual environment and activate

windows

 pip install virtualenv
 virtualenv venv
 <YOUR WORKING DIRECTORY>/venv/scripts/activate

Your Current Working Directory

Ubuntu [Debian]

sudo apt-get install python3-pip
sudo pip3 install virtualenv 
virtualenv venv 
source venv/bin/activate

you can use any name instead of venv

2. Install django-setup-cli

pip3 install django-setup-cli

Usages

How to use

Usage: django-cli [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  generate      Generates YAML File
  startproject  Starts Django Project

1. startproject

Option 1:

Similar to django-admin startproject

If there's no valid setup.yaml file in your working directory django-cli will take some input to start the project

To Start a project use the following command in the shell

django-cli startproject PROJECT_NAME

Note: PROJECT_NAME is optional

>> django-cli startproject ProjectName[Optional]

1. Project Name
Your Project Name: T

2. Install Necessary Libraries
Install Libraries [y/N]: y

1.Install djangorestframework [y/N]: y
2.Install graphene-django [y/N]: y
3.Install django-channels [y/N]: y
4.Install django-localflavor [y/N]: y
5.Install celery [y/N]: y
6.Install whitenoise [y/N]: y
7.Install django-filter [y/N]: y
8.Install django-extensions [y/N]: y
9.Install django-storages [y/N]: y

3. Static File
Create/Use Static File [y/N]: y

4. Template File
Create/Use Template File [y/N]: y

5. Media File
Create/Use Media File [y/N]: y

6. Setup Database
Setup Database [Skip To Use Default] [y/N]: y
1. postgresql
2. mysql
3. maria_db
4. oracle
5. mssql
6. sqlite3
7. django_cockroachdb

Database Engine: 1
Database Name: DATABASE_NAME
Database User: USER
Database Password: PASSWORD
Database Host: localhost
Database Port: 5432

7. Setup Cache
Install Cache [y/N]: y

1. pymemcache
2. redis
3. DatabaseCache
4. FileBasedCache
5. LocMemCache

Cache Engine: 2
Cache Location: LOCATION

After Providing required Information Your Project will be created and you will see following output

1. Installing Required Libraries
installing django
...
...
2. Creating Source Directory
..
3. Creating Project File

Project Setup Complete

Your working directory will have the following files and folders

project
│   README.md
│   .gitignore    
│   .env       [Django Secrets]
|   setup.yaml [django-cli YAML Setup Config File]  
└───src
   │   manage.py
   │   
   └───PROJECT_NAME
       │   asgi.py
       │   config.py
       │   settings.py   
       |   wsgi.py
       |   urls.py 

Note: Do not delete .env file, it will contain database, cache and django secret keys

Option 2:

1. Create a setup.yaml file

name: TEST_PROJECT
libraries:
- django-rest-framework
- celery
- django-storages
template: true
static: true
media: false
database:
  engine: postgresql
  user: user
  password: password
  host: host
  port: port
  option: 
    config: psql.cfg
cache:
  backend: redis
  location: localhost:6532
env:
  SECRET_KEY: YOUR_SECRET_KEY

2. Run django-cli startproject in terminal/shell

django-cli startproject
# Your Project Will be created automatically using the setup.yaml file

Use Environment Variable in setup.yaml

It is possible to use secrets I.E [Database Password, Username, Secret Key] using environment variable

To Hide Secrets Using environment variable create a cli.env file in the source directory And do the following

cli.env

MY_SECRET_KEY=
   
    
DATABASE_USER=django_cli
DATABASE_PASSWORD=gonnaCry?

   

setup.yaml

To use env secret Put $ before your env variable I.E $SECRET_KEY

name: TEST_PROJECT
libraries:
- django-rest-framework
- celery
- django-storages
template: true
static: true
media: false
database:
  engine: postgresql
  user: $DATABASE_USER
  password: $DATABASE_PASSWORD
  host: host
  port: port
  option: 
    config: psql.cfg
cache:
  backend: redis
  location: localhost:6532
env:
  SECRET_KEY: $MY_SECRET_KEY

You can target a different env file using --env django-cli startproject NewProject --env spider.env

2. generate

django-cli generate PROJECT_NAME --env cli.env

Will generate setup.yaml file, it will not create project PROJECT_NAME and --env are optional fields

3. install

django-cli install

Will install required libraries also install libraries that are inside requirements.txt file

@Creator and Maintainer

Khan Asfi Reza

You might also like...
pytest-django allows you to test your Django project/applications with the pytest testing tool.

pytest-django allows you to test your Django project/applications with the pytest testing tool.

django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project. Inspired in the dashboard framework Dashing
django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project. Inspired in the dashboard framework Dashing

django-dashing django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project.

Intellicards-backend - A Django project bootstrapped with django-admin startproject mysite

Intellicards-backend - A Django project bootstrapped with django-admin startproject mysite

Get inside your stronghold and make all your Django views default login_required

Stronghold Get inside your stronghold and make all your Django views default login_required Stronghold is a very small and easy to use django app that

💨  Fast, Async-ready, Openapi, type hints based framework for building APIs
💨 Fast, Async-ready, Openapi, type hints based framework for building APIs

Fast to learn, fast to code, fast to run Django Ninja - Fast Django REST Framework Django Ninja is a web framework for building APIs with Django and P

A Django chatbot that is capable of doing math and searching Chinese poet online. Developed with django, channels, celery and redis.

Django Channels Websocket Chatbot A Django chatbot that is capable of doing math and searching Chinese poet online. Developed with django, channels, c

Blog focused on skills enhancement and knowledge sharing. Tech Stack's: Vue.js, Django and Django-Ninja

Blog focused on skills enhancement and knowledge sharing. Tech Stack's: Vue.js, Django and Django-Ninja

Meta package to combine turbo-django and stimulus-django

Hotwire + Django This repository aims to help you integrate Hotwire with Django 🚀 Inspiration might be taken from @hotwired/hotwire-rails. We are sti

django-quill-editor makes Quill.js easy to use on Django Forms and admin sites
django-quill-editor makes Quill.js easy to use on Django Forms and admin sites

django-quill-editor django-quill-editor makes Quill.js easy to use on Django Forms and admin sites No configuration required for static files! The ent

Comments
Releases(v1.0.17)
Owner
Khan Asfi Reza
Full Stack Developer, experienced in languages and frameworks like Python, TypeScript, Sass, Django, React, Vue, etc
Khan Asfi Reza
Flashback is an awesome, retro IRC based app built using Django

Flashback Flashback is an awesome, retro IRC based app built using Django (and the Django Rest Framework) for the backend as well as React for the fro

Unloading Gnat 1 Dec 22, 2021
Django-Docker - Django Installation Guide on Docker

Guía de instalación del Framework Django en Docker Introducción: Con esta guía p

Victor manuel torres 3 Dec 02, 2022
An app that allows you to add recipes from the dashboard made using DJango, JQuery, JScript and HTMl.

An app that allows you to add recipes from the dashboard. Then visitors filter based on different categories also each ingredient has a unique page with their related recipes.

Pablo Sagredo 1 Jan 31, 2022
A Django/Python web app that functions as a digital diary

My Django Diary Full-stack web application that functions as a digital diary using Django, Python, SQLite, HTML & CSS. Things I learned during this pr

1 Sep 30, 2022
Simple Login Logout System using Django, JavaScript and ajax.

Djanog-UserAuthenticationSystem Technology Use #version Python 3.9.5 Django 3.2.7 JavaScript --- Ajax Validation --- Login and Logout Functionality, A

Bhaskar Mahor 3 Mar 26, 2022
☄️ Google Forms autofill script

lazrr 'Destroy Them With Lazers' - Knife Party, 2011 Google Forms autofill script Installation: pip3 install -r requirements.txt Usage: python3 lazrr.

Serezha Rakhmanov 12 Jun 04, 2022
PEP-484 stubs for Django

pep484 stubs for Django This package contains type stubs and a custom mypy plugin to provide more precise static types and type inference for Django f

TypedDjango 1.1k Dec 30, 2022
Django project starter on steroids: quickly create a Django app AND generate source code for data models + REST/GraphQL APIs (the generated code is auto-linted and has 100% test coverage).

Create Django App 💛 We're a Django project starter on steroids! One-line command to create a Django app with all the dependencies auto-installed AND

imagine.ai 68 Oct 19, 2022
A Django web application that allows you to be in the loop about everything happening in your neighborhood.

A Django web application that allows you to be in the loop about everything happening in your neighborhood. From contact information of different handyman to meeting announcements or even alerts.

Kennedy Ngugi Mwaura 3 Dec 11, 2022
Utility for working with recurring dates in Django.

django-recurrence django-recurrence is a utility for working with recurring dates in Django. Documentation is available at https://django-recurrence.r

408 Jan 06, 2023
English dictionary using Django based on freecodecamp

English Dictionary Hi there, i made this english dictionary using Django based on freecodecamp.org tutorial :) Table of Contents Preview Technologies

Aline Alencar 3 May 09, 2022
Auth module for Django and GarpixCMS

Garpix Auth Auth module for Django/DRF projects. Part of GarpixCMS. Used packages: django rest framework social-auth-app-django django-rest-framework-

GARPIX CMS 18 Mar 14, 2022
Set the draft security HTTP header Permissions-Policy (previously Feature-Policy) on your Django app.

django-permissions-policy Set the draft security HTTP header Permissions-Policy (previously Feature-Policy) on your Django app. Requirements Python 3.

Adam Johnson 78 Jan 02, 2023
The uncompromising Python code formatter

The Uncompromising Code Formatter “Any color you like.” Black is the uncompromising Python code formatter. By using it, you agree to cede control over

Python Software Foundation 30.7k Jan 03, 2023
APIs for a Chat app. Written with Django Rest framework and Django channels.

ChatAPI APIs for a Chat app. Written with Django Rest framework and Django channels. The documentation for the http end points can be found here This

Victor Aderibigbe 18 Sep 09, 2022
It takes time to start a Django Project and make it almost production-ready.

It takes time to start a Django Project and make it almost production-ready. A developer needs to spend a lot of time installing required libraries, setup a database, setup cache as well as hiding se

Khan Asfi Reza 1 Jan 01, 2022
Django Query Capture can check the query situation at a glance, notice slow queries, and notice where N+1 occurs.

django-query-capture Overview Django Query Capture can check the query situation at a glance, notice slow queries, and notice where N+1 occurs. Some r

GilYoung Song 80 Nov 22, 2022
A fresh approach to autocomplete implementations, specially for Django. Status: v3 stable, 2.x.x stable, 1.x.x deprecated. Please DO regularely ping us with your link at #yourlabs IRC channel

Features Python 2.7, 3.4, Django 2.0+ support (Django 1.11 (LTS), is supported until django-autocomplete-light-3.2.10), Django (multiple) choice suppo

YourLabs 1.7k Jan 01, 2023
Quick example of a todo list application using Django and HTMX

django-htmx-todo-list Quick example of a todo list application using Django and HTMX Background Modified & expanded from https://github.com/jaredlockh

Jack Linke 54 Dec 10, 2022
A simple page with paypal payment and confiramtion in django

django-paypal a simple page with paypal payment and confiramtion in django Youtube Video : Paypal Smart Button : https://developer.paypal.com/demo/che

Mahmoud Ahmed 5 Feb 19, 2022