DEV Community

Cover image for Django Cookie-Cutter - Simple Theme-able Generator
Sm0ke
Sm0ke

Posted on • Originally published at blog.appseed.us

Django Cookie-Cutter - Simple Theme-able Generator

Hello Coders!

This article presets Django Cookie-Cutter as a simple way to build a Django project with less manual coding and the possibility to customize a few things like UI design and database type (SQLite, MySql, or PostgreSQL). For newcomers, CookieCutter is a command-line utility that creates projects from project templates and Django is a leading web framework built by experts using a batteries-included concept.

Thanks for reading! - Content provided by App Generator.


What's in the box

Using the Django Cookie-Cutter tool any developer can generate simple Django projects like the ones listed below with customized design and database backends plus minor things like project name and README instructions.


Django Cookie-Cutter - Sample Projects.


How to use it

To use this simple generator a minimal programming kit should be installed in the workstation starting with Python3 and GIT:

  • Python - a modern script language used for many types of projects
  • GIT - a command-line tool used to download sources from Github
  • A modern editor like VSCode, Atom, or even Notepad++

Once we have all the tools properly installed, we can move on and build a Django project.


Step #1 - Install dependencies (cookie-cutter and GitPython)

$ pip install cookiecutter
$ pip install GitPython
Enter fullscreen mode Exit fullscreen mode

The above command uses PIP, the official package manager for Python, to install required modules globally in the system. The recommended way to install packages is to use a virtual environment that isolates the installation as shown below:

$ # Virtualenv modules installation (Unix based systems)
$ virtualenv env
$ source env/bin/activate
$
$ # Install modules
$ pip install cookiecutter
$ pip install GitPython
Enter fullscreen mode Exit fullscreen mode

Step #2 - Generate the project

$ cookiecutter https://github.com/app-generator/cookiecutter-django.git
Enter fullscreen mode Exit fullscreen mode

Step #3 - Customize the future project

Most of the commands provide a default value selectable by an ENTER.

>>> # Project Name Option 
>>> project_name [Django Seed project]: django_volt

>>> # Project Slug is the directory name
>>> project_slug [django_volt]:

>>> # Project Description: saved in the README file 
>>> description [A simple Django project]: My Simple Django Project

>>> # Project Author: saved in the README file   
>>> author_name []: Sm0ke

>>> # Author Email: saved in the README file   
>>> email [bill@microsoft.com]:

>>> Project Version: saved in the README file
>>> version [0.0.1]:

>>> UI Kit: (Volt default option)
>>> Select theme:
1 - volt
2 - soft-ui
3 - datta-able

>>> Database: (SQLite default option) 
Select database:
1 - sqlite3
2 - mysql
3 - postgresql

>>> Database Credentials: Used to configure the connection
>>> database_name [appseed_django]: db_name
>>> database_user [appseed_user]: db_user
>>> database_pass [Pass1234]: SuperS3cret_Hgdv
Enter fullscreen mode Exit fullscreen mode

In the end, the UI is downloaded from a public repository and injected into the codebase. Let's open the generated directory django_volt and visualize the codebase.


Django Cookie-Cutter - Generated Codebase


Item #1 is the project README customized to explain how to build the project according to the selected options (database, project name...).

Item #2 - applications that provide basic features like authentication, forms validation, and UI Theme integration.


The next logical step is to follow the build instructions presented in the README file and start the generated project:

Step #1 - Create a virtual environment

$ # Virtualenv modules installation (Unix based systems)
$ virtualenv env
$ source env/bin/activate
Enter fullscreen mode Exit fullscreen mode

Step #2 - Install project dependencies

$ # Install modules
$ pip3 install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

Step #3 - Set up the database (create tables)

$ python manage.py makemigrations
$ python manage.py migrate
Enter fullscreen mode Exit fullscreen mode

Step #4 - Start the generated Django project

$ # Start the application (development mode)
$ python manage.py runserver
$
$ # Access the web app in the browser: http://127.0.0.1:8000/
Enter fullscreen mode Exit fullscreen mode

The project should look like the original Volt Dashboard (demo link) and the log in page is shown by default for guest users. Once we create a new user and Sign IN, the access to the private pages is unlocked.


Django Cookie-Cutter - Login Page


Django Cookie-Cutter Volt - Dashboard Page

Django Cookie-Cutter - Dashboard Page.


In the same way, we can build more Django projects but using different UI kits without coding anything.


Soft UI - A modern Bootstrap 5 design

Designed for those who like bold elements and beautiful websites, Soft UI Dashboard is ready to help you create stunning websites and web apps. Soft UI Dashboard is built with over 70 frontend individual elements, like buttons, inputs, navbars, nav tabs, cards, or alerts, giving you the freedom of choosing and combining.


Django Soft UI Dashboard - LIVE Demo


Django Cookie-Cutter - Soft UI.


Datta Able - a colorful dashboard

Datta Able Bootstrap Lite is the most stylized Bootstrap 4 Lite Admin Template, around all other Lite/Free admin templates in the market. It comes with high feature-rich pages and components with fully developer-centric code.


Datta Able Django - LIVE deployment


Django Cookie-Cutter - Datta Able.


The Django Cookie-Cutter tool will be updated with more options (deployment), UI Themes, and more featured bundled in the codebase.

  • New themes: CoreUI, AdminLTE (popular open-source templates)
  • Deployment: AWS, Google Cloud, HEROKU, Docker
  • Modules: Data tables, Charts, Stripe Payments

The full list with future evolutions can be found here: Django Codebase SPECS.


Thanks for reading! For more resources, please access:

Discussion (4)

Collapse
crearesite profile image
WebsiteMarket

Nice tool! Keep posting.

Collapse
sm0ke profile image
Sm0ke Author

Ty! 🚀🚀

Collapse
uithemes profile image
ui-themes

Soft looks great. Thanks for sharing.
P.S. GitPython is definitely something that I need in my development.

Collapse
sm0ke profile image
Sm0ke Author

Hello & Thanks for stopping by!
First time I'm using GitPython and looks like a comple wrapper over GIT.
🚀🚀