Skip to main content

006 A Guide to Deploy Your Django Application on PythonAnywhere

Deploy Django on Python Anywhere
A step-by-step guide to deploy your django application on PythonAnywhere.
  1. Go to pythonanywhere.com
  2. Click on Console Tab
  3. Click on Bash Link
  4. Activate virtual environment with the following command: mkvirtualenv --python=python3.5 myproj
  5. use the command pip list to view all the packages that are already installed
  6. Use pip install django to install latest version of Django
  7. Get the application running in the instance by cloning from Github. Use git clone <HTTPS link> You will find the HTTPS link by clicking on Clone or download button in your github repository
  8. Use command ls to view all files and folders in the virtual environment.
  9. go into the project folder using cd <project_folder>
  10. Use command ls to view all files and folders inside the project folder
  11. Keep going inside until you find manage.py file
  12. Once you find manage.py, use the following command python manage.py migrate
  13. My application uses Pillow library so I get an error. I will install Pillow using the command pip install Pillow and then run python manage.py migrate again
  14. I have an app inside my project named mainApp, so I will use makemigrations command: python manage.py makemigrations mainApp
  15. Then run python manage.py migrate again
  16. Now we create superuser with the following command: python manage.py createsuperuser
  17. Fill in the username, password, email, etc. to create superuser
  18. If you get an error such as No module named argon2, you must install argon2 using following command: pip install django[argon2]
  19. Once argon2 is installed, create superuser using the command python manage.py createsuperuser
  20. Next go to pythonanywhere.com and click on Web tab
  21. Create a custom app by clicking on "Adda new webapp". Click Next. Click on "Manual configuration (including virtualenvs)". Click on Python 3.6. Hit Next
  22. It will first create a default application
  23. Scroll down to Virtualenv section and enter path to virtualenv
  24. Enter the follow: /home/<your user name>/.virtualenvs/<your virtual environment name>
  25. Click on "Start a console in this virtualenv" that appears now
  26. In the console type: ls
  27. Go inside folders using cd <folder name> until you find manage,py
  28. Type pwd and copy the path you get
  29. Go to anywherepython.com > web > under code section change source code to the path you have
  30. Click on the WSGI configuration file
  31. Delete lines between 13 and 47
  32. Go to # +++++++++++ DJANGO +++++++++++ and uncomment or add the following
    • import os
    • import sys
    • path = '/home/vinitk/django-signup-login-and-admin/RefOne'
      • Remember to change path = '/home/vinitk/mysite' to your path
    • if path not in sys.path:
    •     sys.path.append(path)
    • os.chdir(path)
    • os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<path to settings>")
      • In my case it is RefOne.settings
    • import django
    • django.setup()
    • from django.core.wsgi import get_wsgi_application
    • application = get_wsgi_application()
  33. Click on Save
  34. Go to Web tab > Click on the Configuration for link
  35. If you find an allow host error, then add the configuration for link to settings.py as follows
    • ALLOWED_HOSTS = ['vinitk.pythonanywhere.com', ]
  36. Push it to github and pull from github in pythonanywhere console
  37. Under Web Tab click on Reload button and then click on configuration for link
  38. Now we setup static for static files to be accessible for the application
  39. To not let django display errors to users change DEBUG to False in settings.py file. To do this either change on your PC and git push to github and git pull to pythonanywhere server or go to Files Tab and go to settings.py and make changes in the editor provided by python anywhere.
  40. Click Save and under Web Tab reload the application
Your website is running and hosted on cloud server provided by PythonAnywhere.

Comments

Popular posts from this blog

Python - List - Append, Count, Extend, Index, Insert, Pop, Remove, Reverse, Sort

šŸ Advance List List is widely used and it's functionalities are heavily useful. Append Adds one element at the end of the list. Syntax list1.append(value) Input l1 = [1, 2, 3] l1.append(4) l1 Output [1, 2, 3, 4] append can be used to add any datatype in a list. It can even add list inside list. Caution: Append does not return anything. It just appends the list. Count .count(value) counts the number of occurrences of an element in the list. Syntax list1.count(value) Input l1 = [1, 2, 3, 4, 3] l1.count(3) Output 2 It returns 0 if the value is not found in the list. Extend .count(value) counts the number of occurrences of an element in the list. Syntax list1.extend(list) Input l1 = [1, 2, 3] l1.extend([4, 5]) Output [1, 2, 3, 4, 5] If we use append, entire list will be added to the first list like one element. Extend, i nstead of considering a list as one element, it joins the two lists one after other. Append works in the following way. Input l1 = [1, 2, 3] l1.append([4, 5]) Output...

Difference between .exec() and .execPopulate() in Mongoose?

Here I answer what is the difference between .exec() and .execPopulate() in Mongoose? .exec() is used with a query while .execPopulate() is used with a document Syntax for .exec() is as follows: Model.query() . populate ( 'field' ) . exec () // returns promise . then ( function ( document ) { console . log ( document ); }); Syntax for .execPopulate() is as follows: fetchedDocument . populate ( 'field' ) . execPopulate () // returns promise . then ( function ( document ) { console . log ( document ); }); When working with individual document use .execPopulate(), for model query use .exec(). Both returns a promise. One can do without .exec() or .execPopulate() but then has to pass a callback in populate.

683 K Empty Slots

  Approach #1: Insert Into Sorted Structure [Accepted] Intuition Let's add flowers in the order they bloom. When each flower blooms, we check it's neighbors to see if they can satisfy the condition with the current flower. Algorithm We'll maintain  active , a sorted data structure containing every flower that has currently bloomed. When we add a flower to  active , we should check it's lower and higher neighbors. If some neighbor satisfies the condition, we know the condition occurred first on this day. Complexity Analysis Time Complexity (Java):  O(N \log N) O ( N lo g N ) , where  N N  is the length of  flowers . Every insertion and search is  O(\log N) O ( lo g N ) . Time Complexity (Python):  O(N^2) O ( N 2 ) . As above, except  list.insert  is  O(N) O ( N ) . Space Complexity:  O(N) O ( N ) , the size of  active . Approach #2: Min Queue [Accepted] Intuition For each contiguous block ("window") of  k  po...