How to Deploy Django project on PythonAnywhere?

26 Nov, 2020
Django has become one of popular frameworks over the past few years. Often, after creating your django project, you are confused, how to share it with people around you. This article revolves around how you can host your django application on pythonanywhere for free. So let’s get started ..!!
Let’s create a simple application in Django for showing the deployment. 
Initialize your Django Project 
django-admin startproject deploy_on_pythonanywhere


Open project in your editor and under settings.py make:
ALLOWED_HOSTS = ['*']

Create requirements.txt file using the command
pip3 freeze > requirements.txt


File structure of our project looks like this:
deploy_on_pythonanywhere
├── db.sqlite3
├── deploy_on_pythonanywhere
│   ├── asgi.py
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-38.pyc
│   │   ├── settings.cpython-38.pyc
│   │   ├── urls.cpython-38.pyc
│   │   └── wsgi.cpython-38.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── requirements.txt


Let’s Start our Django Server
cd deploy_on_pythonanywhere
python3 manage.py runserver

Yahooooo, your server is running on localhost  But wait, wait... that’s not over, let’s make it live for the world
Follow this link to push the project on github – How to Upload a Project on Github?
Create an account on pythonanywhere –  Click Here
After Register, you can see the page like this
Now click on Console then select Bash you’ll see like this
Run following commands on bash:
Clone GitHub repo
git clone https://github.com/Prakhar-Mangal/deploy_on_pythonanywhere.git

Now create and setup environment variables
python3 -m venv env #create virtual environment
source env/bin/activate #activate virtual environment
cd deploy_on_pythonanywhere #navigate inside your project 
pip install -r requirements.txt #installing dependencies using requirements.txt

Now copy the path of your directories which you installed on bash
Type command on bash
cd
ls # get list of directories
pwd #copy the path for future use


Here it looks like:
Hurree, we set up our project successfully : ) But wait wait, follow the final process and we’re ready to go
Now click on Web then select Add a new web app
Click on next and follow the procedure
select Django as the framework
Select python3.8 (latest) and click on next till last. 
Now under the Web section open the WSGI configuration file
Edit WSGI configuration file on line no. 12 and 17 remove the word mysite with your project name which you cloned from GitHub, in my case it is deploy_on_pythonanywhere
Now it looks like this and then click on save:
Select Virtualenv section under Web:
Enter the path of Virtualenv as we created using bash (refer above pwd command for path)
Click on Reload under the Web section and visit the link
 
Python Django
Python Framework
Technical Scripter 2020
Python
Technical Scripter
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to iterate through Excel rows in Python?
Rotate axis tick labels in Seaborn and Matplotlib
Deque in Python
Queue in Python
Defaultdict in Python
Check if element exists in list in Python
Python Classes and Objects
Bar Plot in Matplotlib
reduce() in Python
Python | Get unique values from a list