Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. It was developed by experienced developers to take care of much of the hassle of web development, so developers can focus on writing their apps without needing to reinvent the wheel. Django is free, open source, and actively maintained by a large community. It emphasizes reusability, less code, and the principle of "Don't Repeat Yourself" (DRY).
In this comprehensive guide, weβll explore the foundational aspects of Django, including its architecture, configuration, app creation, URL routing, views, templates, models, forms, admin interface, middleware, security, and deployment strategies.
pip install django
django-admin --version
To begin building with Django, you need to create a project. A project is a collection of settings and configurations for an instance of Django, including database connection info, apps you want to enable, middleware, etc.
django-admin startproject myproject
cd myproject
python manage.py runserver
Visit http://127.0.0.1:8000/ to see the default welcome page.
myproject/
βββ manage.py
βββ myproject/
βββ __init__.py
βββ settings.py
βββ urls.py
βββ asgi.py
βββ wsgi.py
In Django, a project is composed of one or more apps. An app is a self-contained component that performs specific functionalities such as a blog, a user system, or a forum.
python manage.py startapp blog
# settings.py
INSTALLED_APPS = [
...
'blog',
]
# blog/views.py
from django.http import HttpResponse
def home(request):
return HttpResponse("Hello, Django World!")
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
Django uses its own templating engine to render HTML. Templates allow passing data from views to frontend.
# blog/templates/blog/home.html
<!DOCTYPE html>
<html>
<head><title>Home</title></head>
<body>
<h1>Hello {{ name }}!</h1>
</body>
</html>
# blog/views.py
from django.shortcuts import render
def home(request):
return render(request, 'blog/home.html', {'name': 'Django'})
Django uses ORM (Object Relational Mapper) to define models which map to database tables.
# blog/models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
python manage.py makemigrations
python manage.py migrate
Django comes with a powerful built-in admin interface.
python manage.py createsuperuser
# blog/admin.py
from django.contrib import admin
from .models import Post
admin.site.register(Post)
# blog/forms.py
from django import forms
class PostForm(forms.Form):
title = forms.CharField(max_length=200)
content = forms.CharField(widget=forms.Textarea)
# blog/views.py
from .forms import PostForm
def create_post(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
else:
form = PostForm()
return render(request, 'blog/create_post.html', {'form': form})
from django.views import View
from django.http import HttpResponse
class HelloView(View):
def get(self, request):
return HttpResponse('Hello from CBV!')
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / "static"]
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'
from django.contrib.auth.models import User
user = User.objects.create_user(username='john', password='mypassword')
from django.contrib.auth.decorators import login_required
@login_required
def dashboard(request):
return render(request, 'blog/dashboard.html')
# blog/middleware.py
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
print("Middleware executed")
response = self.get_response(request)
return response
pip install djangorestframework
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET'])
def api_home(request):
return Response({"message": "Hello API"})
from django.test import TestCase
from .models import Post
class PostTestCase(TestCase):
def test_post_creation(self):
post = Post.objects.create(title="Test", content="Test content")
self.assertEqual(post.title, "Test")
pip install gunicorn
gunicorn myproject.wsgi
python manage.py collectstatic
Django provides a powerful, fully featured framework for developing secure, scalable web applications with Python. From its admin interface to its ORM and robust templating system, Django allows developers to focus on building their applications without worrying about reinventing core web features.
This guide introduced core Django concepts including projects and apps, views, models, templates, forms, authentication, and deployment. With practice, developers can build anything from simple blogs to enterprise-grade systems using Djangoβs extensive ecosystem.
Djangoβs philosophy of "batteries included" gives it a rich set of tools, but it remains highly customizable and extendable, making it one of the top choices for web development with Python.
Python is commonly used for developing websites and software, task automation, data analysis, and data visualisation. Since it's relatively easy to learn, Python has been adopted by many non-programmers, such as accountants and scientists, for a variety of everyday tasks, like organising finances.
Learning Curve: Python is generally considered easier to learn for beginners due to its simplicity, while Java is more complex but provides a deeper understanding of how programming works.
The point is that Java is more complicated to learn than Python. It doesn't matter the order. You will have to do some things in Java that you don't in Python. The general programming skills you learn from using either language will transfer to another.
Read on for tips on how to maximize your learning. In general, it takes around two to six months to learn the fundamentals of Python. But you can learn enough to write your first short program in a matter of minutes. Developing mastery of Python's vast array of libraries can take months or years.
6 Top Tips for Learning Python
The following is a step-by-step guide for beginners interested in learning Python using Windows.
Best YouTube Channels to Learn Python
Write your first Python programStart by writing a simple Python program, such as a classic "Hello, World!" script. This process will help you understand the syntax and structure of Python code.
The average salary for Python Developer is βΉ5,55,000 per year in the India. The average additional cash compensation for a Python Developer is within a range from βΉ3,000 - βΉ1,20,000.
Copyrights © 2024 letsupdateskills All rights reserved