Everything About Django - 1 (How To Start)
Tags: django, webdev, beginners, python
Published: 2021-11-06 16:53:31

This is the **first blog** of the series **Everything About Django**.

#### Prerequisite
Just Install Python3 in your system along with pip.

## What is Django?
Django is a full stack open source web framework built on top of Python.

## How to setup Virtual Environment?
A virtual environment is a Python environment such that the Python interpreter, libraries and scripts installed into it are isolated from those installed in other virtual environments, and the whole system. With virtual environment, you can seperate all the packages and requirements you need for each project. It works in a similar way to package.json in Javascript.
* Install pipenv using pip
`pip install pipenv`
* Create a folder `dev` and open command prompt inside it.
* Create a virtualenv with pipenv 
`pipenv install`
* Type `pipenv shell`
* This activates our virtual environment.
* Type `pip freeze` to check the libraries installed. It will give no result as no python libraries are installed in this environment yet.

## Install Django
We will be using Django 2.2.6 (3 can also be used).
``pip install django==2.2.6``
This installs our Django.

## Creating a Django Project
We will create a django project named Beginner.
Once our django is installed, we get access to `django-admin` which is a django administrator with which we initialize our new project.
Type in the same command prompt : `django-admin startproject Beginner`
This creates our new Django project.

## Django Project Created
This is our Django Project created. Let's look at the files.
![Django File Structure](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cl14r7i8v20lads9hwc0.png)
Inside our parent `Beginner` Folder, we have the following structure :
* `Beginner` Folder : This folder has the same name as our Parent folder(Project Name). It contains all the settings and configurations of the whole project.
    * `__init__.py` : This file tells the interpreter that it's a python project.
    * `settings.py` : This file contains all the configurations of this project like `SECRET_KEY`, `ALLOWED_HOSTS`, `INSTALLED_APPS`, `MIDDLEWARES`, 'STATIC FILES CONFIG`, etc. We will discuss about all of this in detail in a seperate blog.
    * `urls.py` : This file contains the root level url configurations. When we run our project, all the urls are checked and matched from this file.
    * `wsgi.py` : This file is the entry point of our project for the web servers during deployment. This file actually connects the web server with our django project. From Django 3.0, we also have `asgi.py` file. ASGI is the successor of WSGI which would need a seperate blog for discussion.
* `manage.py` : This python file is located at the root directory. This is same as `django-admin`. It works like a django administrator but only works for the current project. We can control the whole project with this command like `python manage.py runserver` - We can run this file by giving instructions with it like `runserver`, `createsuperuser`, etc.

## How to Run my Project?
Let's go to our same command prompt and go inside the Beginner folder `cd Beginner` and type : `python manage.py runserver`. This runs our django project on our system's localhost at port 8000: http://localhost:8000/
This is what our command prompt shows : ![Command Prompt](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a6aen837mho72kfsfrb8.png)
We have 17 unapplied migrations which we'll discuss in our next blog.
Let's go to the localhost url at 8000 port and test if our project runs.
![Django Project](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z8fcq24zkj7ygbnx9b35.png)
If we see this template on the screen, our project is working and properly configured. We can start working on it now.

##THANK YOU
You can find me at : [My Portfolio](https://priyanshu-panwar.github.io/) | [LinkedIn](https://www.linkedin.com/in/priyanshu-panwar)