web应用的简介、手撸web框架、 借助于wsgiref模块、Django框架的学习(主要文件介绍、应用、小白必会三板斧)
发布人:shili8
发布时间:2025-03-11 11:54
阅读次数:0
**Web 应用简介**
Web 应用是基于 HTTP 协议的网络应用程序,通过 Web服务器向用户提供服务。Web 应用的主要特点包括:
* **分布式**: Web 应用可以部署在多台机器上,提高可扩展性和高可用性。
* **跨平台**: Web 应用可以在不同类型的设备上运行,无论是 Windows、Linux 还是 macOS。
* **易于维护**: Web 应用的代码通常使用标准化的编程语言和框架,因此更容易维护和升级。
**手撸 Web 框架**
我们将从最基本的层面开始构建一个简单的 Web 框架。首先,我们需要定义一个 Request 对象来存储 HTTP 请求的信息,然后创建一个 Response 对象来返回 HTTP 响应。
import MyRequest( /> def do_GET(self): self.send_response(200) self.end_headers() self.wfile.write(b"Hello, world!") def run_server(): server_address = ('',8000) = MyRequest) print("Starting server on port8000...") /> run_server()
在这个例子中,我们定义了一个 `MyRequest` 类来继承 ` `do_GET` 方法来返回 HTTP 响应。然后我们创建了一个 `run_server` 函数来启动 HTTP服务器。
**借助于 wsgiref 模块**
wsgiref 是 Python 的一个标准模块,用于实现 WSGI(Web Server Gateway Interface)接口。WSGI 是一个规范,定义了 Web 应用和 Web服务器之间的通信协议。
from wsgiref.simple_server import make_serverdef application(environ, start_response): status = '200 OK' response_headers = [('Content-type', 'text/plain')] start_response(status, response_headers) return [b'Hello, world!'] def run_server(): server_address = ('',8000) = make_server(server_address, application) print("Starting server on port8000...") /> run_server()
在这个例子中,我们定义了一个 `application` 函数来实现 WSGI 接口,返回 HTTP 响应。然后我们创建了一个 `run_server` 函数来启动 HTTP服务器。
**Django 框架的学习**
Django 是 Python 的一个开源 Web 框架,用于快速开发复杂的 Web 应用。下面是 Django 框架的主要文件介绍:
* **settings.py**: 这个文件定义了 Django项目的设置,包括数据库连接、时间区等。
* **urls.py**: 这个文件定义了 URL 到视图函数的映射。
* **views.py**: 这个文件定义了视图函数,负责处理 HTTP 请求并返回 HTTP 响应。
下面是 Django 框架的应用:
* **模型**: Django 提供了一个 ORM(Object-Relational Mapping)系统来与数据库进行交互。通过定义模型类,可以轻松地操作数据库。
* **视图函数**: 视图函数负责处理 HTTP 请求并返回 HTTP 响应。Django 提供了多种类型的视图函数,包括函数视图、类视图等。
* **模板**: Django 提供了一个模板系统来渲染 HTML 模板。通过定义模板,可以轻松地生成 HTML 页面。
下面是 Django 框架的小白必会三板斧:
1. **创建 Django项目**:使用 `django-admin startproject` 命令创建一个新的 Django项目。
2. **定义模型类**:在 `models.py` 文件中定义模型类,来描述数据库中的数据结构。
3. **定义视图函数**:在 `views.py` 文件中定义视图函数,来处理 HTTP 请求并返回 HTTP 响应。
# settings.pyINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewGuardMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'myproject.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'myproject.wsgi.application' # Database# = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } # Password validation# = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthUserAttributeSimilarityPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization# /> LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = TrueUSE_L10N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images) # /> STATIC_URL = '/static/' # Default primary key field type# = 'django.db.models.BigAutoField'
# urls.pyfrom django.contrib import adminfrom django.urls import path, includeurlpatterns = [ path('admin/', admin.site.urls), path('', include('myapp.urls')), ]
# views.pyfrom django.shortcuts import renderdef index(request): return render(request, 'index.html')
# models.pyfrom django.db import modelsclass Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=100) def __str__(self): return self.title
# templates/index.html<!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <h1>Hello, world!</h1> </body> </html>
上述代码示例展示了 Django 框架的主要文件介绍、应用和小白必会三板斧。