Django is a web framework written in the Python programming language aimed at building web applications quickly. Django is free, opened source, and maintained by Django Software Foundation.
Opinionated frameworks recommend specific ways of solving problems to streaming productivity.
A project installation comes with administrative tools to deploy a development server immediately after establishing a project.
python3 manage.py runserver
URLs are mapped to a view function, which processes a user’s web request and sends a response back.
def home(request):return HttpResponse("This is a response from the server.")
A project is a collection of configurations and individual apps for a particular website. Each app should have a clearly defined purpose.
A project is started using the startproject command.
django-admin startproject myproject
manage.py is a file that includes commands to administer a Django app.
The settings.py file contains the project settings for a Django project.
A project installation comes with administrative tools to deploy a development server immediately after establishing a project.
python3 manage.py runserver
A Django server can be stopped by pressing ctrl + c.
The development server runs locally on port 8000 by default. An alternative port can be provided as an option.
python3 manage.py runserver <optional_port_number>
When the development server is started on the default port, the project can be viewed in the browser at the URL: http://localhost:8000.
The development server will reload whenever there are changes to the application code.
New Django projects have several apps installed by default such as the admin panel and authentication.
INSTALLED_APPS = [# ... Other pre-installed apps"myapp.apps.MyappConfig"]
New apps are made with the startapp command.
python3 manage.py startapp <name_of_app>
New Django apps must be added to settings.py in the INSTALLED_APPS list in order for the project to recognize them.
INSTALLED_APPS = [# ... Other pre-installed apps"myapp.apps.MyappConfig"]
URLs are configured in URLconfig file, urls.py.
urlpatterns = [("", include("app.urls"))]
View functions are mapped to URLs inside urls.py.
urlpatterns = [path('', views.home, name="home")]
The migrate command will update database models for projects installed in INSTALLED_APPS.
python3 manage.py migrate
URLs are created using the path() function which takes three arguments— the route, the view function, and an optional name.
path("", views.home, name="home")
Templates should be namespaced by creating a nested folder structure to avoid name conflicts between apps.
A response to a web request is given in a HttpResponse object, which can be anything from HTML to an image.
def myView(request):return HttpResponse("Here is my response")
The front-end refers to the part of web apps visible to users, handled in their browsers. This includes elements like HTML for structure, CSS for styling, and JavaScript for functionality. Meanwhile, the back-end handles the server-side processes, managing data and responding to requests.
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Front-End Development</title><style>body {font-family: Arial, sans-serif;background-color: #f4f4f9;}</style></head><body><h1>Hello, World!</h1><p>This is a simple HTML page demonstrating front-end basics.</p><button onclick="alert('Hello, Front-End!')">Click me!</button></body></html>
A web server listens for client requests over a network and returns responses. Typically, these servers use the HTTP protocol to send requested resources like HTML pages, images, or files. Understanding these basic functions of a web server helps in designing efficient network communication.
# Simple HTTP server in Pythonimport http.serverimport socketserverPORT = 8000Handler = http.server.SimpleHTTPRequestHandlerwith socketserver.TCPServer(("", PORT), Handler) as httpd:print(f"Serving at port {PORT}")httpd.serve_forever()
The back-end of web applications handles server-side logic, processes requests, and manages data interactions. This ensures dynamic responses are generated for clients effectively. Node.js is often used for this purpose, working seamlessly with databases like MongoDB or MySQL.
const http = require('http');const server = http.createServer((req, res) => {if (req.url === '/') {res.write('You have reached the server-side logic page');res.end();}});server.listen(3000);console.log('Listening on port 3000...');
Databases store and manage data for web apps efficiently. Relational databases organize data into tables, facilitating easy access and manipulation using queries. Non-relational databases store data differently, such as key-value pairs or documents, offering flexibility for unstructured data.
--Example of a relational database query:SELECT * FROM users WHERE status = 'active';--Example of non-relational database entry using JSON-like format:{"key": "user123","value": {"name": "John Doe","status": "active"}}
A web API enables communication between a client interface and a server by following a specific set of rules. Through a process called the HTTP request-response cycle, clients can retrieve, update, or manipulate data on the server side. This interaction is essential for dynamic web applications that rely on external data.
GET /api/data HTTP/1.1Host: example.comAccept: application/jsonHTTP/1.1 200 OKContent-Type: application/json{"data": [{"id": 1, "name": "John Doe"},{"id": 2, "name": "Jane Smith"}]}
Authentication ensures only legitimate users can access specific features in an application by verifying their identity, often using credentials like usernames and passwords.
from getpass import getpass# Placeholder user credentials for demonstrationUSERNAME = "user123"PASSWORD = "securepass"username_input = input("Enter your username: ")password_input = getpass("Enter your password: ")if username_input == USERNAME and password_input == PASSWORD:print("Access granted.")else:print("Access denied.")
Authorization is critical for controlling access. Once a user proves their identity, authorization determines what they can do. It’s like having different keys for different doors based on your role!
// Example of authorization checkconst user = {role: 'admin',permissions: ['view-dashboard', 'edit-user'],};function authorize(action) {if (user.permissions.includes(action)) {return `Access granted for ${action}`;} else {return `Access denied for ${action}`;}}console.log(authorize('edit-user')); // Outputs: Access granted for edit-userconsole.log(authorize('delete-user')); // Outputs: Access denied for delete-user
A technology stack is an essential part of web development. It combines programming languages, frameworks, databases, and tools to create a cohesive environment for building web applications. Understanding how each component interacts can enhance productivity and efficiency.