Django is a python web framework used to build web app and api services. Its comes under Model Template Views
architectural pattern. Django is battery included tool, shipped with many built in feature like authentication, admin panel, session handling, ORM, etc.
Virtualenv
Advantage of using virtualenv is machine can have multiple django projects which are running in different version of django.
create Virtual environment using virtualenv
virtualenv --python=python3 venv
to know more about Virtual environment
Activate Virtual environment
This command will work on bith Mac and Linux
source venv/bin/activate
Use this to activate on Windows
venv\Scripts\activate
To deactivate Virtual environment, this command common for all the platforms
deactivate
Install Django
After activating the virtual environment install the latest django version in venv
pip install django
To check django is installed, list the pip packages, this command will list all the installed packages in venv
pip freeze
or you can check by entering this command in terminal. if django installed, you should see the version of your installation.
python -m django --version
Creating a project
Commad will create a project called mysite
, its just a directory. mysite
will act as the root
directory for the project.
django-admin startproject mysite
mysite/ ---> root directory
manage.py
mysite/ ---> django package directory
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
Alternative command, both do the same process with a small difference. Dot .
will create the project at the at location from where the command is being executed. Then the directory will act as root directory
django-admin startproject mysite .
Now lets check the project, go to the root directory and run this command to start the django project
python manage.py runserver
Above one will run the django in http://127.0.0.1:8000/
Ip and port, we can change the running ip and port.
python manage.py runserver 192.168.43.135:8080
This will run the project in http://192.168.43.135:8080
runserver 192.168.43.135:8080
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 26, 2020 - 19:25:29
Django version 3.1.2, using settings 'mysite.settings'
Starting development server at http://192.168.43.135:8080/
Quit the server with CTRL-BREAK.
Open the link in browser with http://192.168.43.135:8080/, you will get an error this is because you need to add the ip in allowed host in settings.py.
For now use the default 127.0.0.1
, run the project
python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 26, 2020 - 19:38:32
Django version 3.1.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
???
You have 18 unapplied migration(s).
Django shipped with build in feature like admin page, session, auth for that it has to apply the migration table to the DB.
By default django shipped with SQlite DB.
Lets apply the migrate to the database
python manage.py migrate
You can see default table structure are applied to SQlite database
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
Thanks you, have a great day ahead.😎
Top comments (0)