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
Vehicle registration using Python, Django and SQlite3

PythonCrud Cadastro de veículos utilizando Python, Django e SQlite3 Para acessar o deploy no Heroku:

Jorge Thiago 4 May 20, 2022
Twitter-clone using Django (DRF) + VueJS

Twitter Clone work in progress 🚧 A Twitter clone project Table Of Contents About the Project Built With Getting Started Running project License Autho

Ahmad Alwi 8 Sep 08, 2022
django social media app with real time features

django-social-media django social media app with these features: signup, login and old registered users are saved by cookies posts, comments, replies,

8 Apr 30, 2022
Organize Django settings into multiple files and directories. Easily override and modify settings. Use wildcards and optional settings files.

Organize Django settings into multiple files and directories. Easily override and modify settings. Use wildcards in settings file paths and mark setti

Nikita Sobolev 940 Jan 03, 2023
A simple app that provides django integration for RQ (Redis Queue)

Django-RQ Django integration with RQ, a Redis based Python queuing library. Django-RQ is a simple app that allows you to configure your queues in djan

RQ 1.6k Jan 06, 2023
🏭 An easy-to-use implementation of Creation Methods for Django, backed by Faker.

Django-fakery An easy-to-use implementation of Creation Methods (aka Object Factory) for Django, backed by Faker. django_fakery will try to guess the

Flavio Curella 93 Oct 12, 2022
Build reusable components in Django without writing a single line of Python.

Build reusable components in Django without writing a single line of Python. {% #quote %} {% quote_photo src="/project-hail-mary.jpg" %} {% #quot

Mitchel Cabuloy 277 Jan 02, 2023
Django API without Django REST framework.

Django API without DRF This is a API project made with Django, and without Django REST framework. This project was done with: Python 3.9.8 Django 3.2.

Regis Santos 3 Jan 19, 2022
A django integration for huey task queue that supports multi queue management

django-huey This package is an extension of huey contrib djhuey package that allows users to manage multiple queues. Installation Using pip package ma

GAIA Software 32 Nov 26, 2022
Django API creation with signed requests utilizing forms for validation.

django-formapi Create JSON API:s with HMAC authentication and Django form-validation. Version compatibility See Travis-CI page for actual test results

5 Monkeys 34 Apr 04, 2022
A simple Blog Using Django Framework and Used IBM Cloud Services for Text Analysis and Text to Speech

ElhamBlog Cloud Computing Course first assignment. A simple Blog Using Django Framework and Used IBM Cloud Services for Text Analysis and Text to Spee

Elham Razi 5 Dec 06, 2022
Django-gmailapi-json-backend - Email backend for Django which sends email via the Gmail API through a JSON credential

django-gmailapi-json-backend Email backend for Django which sends email via the

Innove 1 Sep 09, 2022
Money fields for Django forms and models.

django-money A little Django app that uses py-moneyed to add support for Money fields in your models and forms. Django versions supported: 1.11, 2.1,

1.4k Jan 06, 2023
Use minify-html, the extremely fast HTML + JS + CSS minifier, with Django.

django-minify-html Use minify-html, the extremely fast HTML + JS + CSS minifier, with Django. Requirements Python 3.8 to 3.10 supported. Django 2.2 to

Adam Johnson 60 Dec 28, 2022
Silk is a live profiling and inspection tool for the Django framework.

Silk is a live profiling and inspection tool for the Django framework. Silk intercepts and stores HTTP requests and database queries before presenting them in a user interface for further inspection:

Jazzband 3.7k Jan 02, 2023
Realtime data read and write without page refresh using Ajax in Django.

Realtime read-write with AJAX Hey,this is the basic implementation type of ajax realtime read write from the database. where you can insert or view re

Mehedi Hasan 3 Dec 13, 2022
Service request portal on top of Ansible Tower

Squest - A service request portal based on Ansible Tower Squest is a Web portal that allow to expose Tower based automation as a service. If you want

Hewlett Packard Enterprise 183 Jan 04, 2023
The pytest framework makes it easy to write small tests, yet scales to support complex functional testing

The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. An example o

pytest-dev 9.6k Jan 06, 2023
Store model history and view/revert changes from admin site.

django-simple-history django-simple-history stores Django model state on every create/update/delete. This app supports the following combinations of D

Jazzband 1.8k Jan 08, 2023
Utilities for implementing a modified pre-order traversal tree in django.

django-mptt Utilities for implementing Modified Preorder Tree Traversal with your Django Models and working with trees of Model instances. Project hom

2.7k Jan 01, 2023