当前位置:实例文章 » 其他实例» [文章]web应用的简介、手撸web框架、 借助于wsgiref模块、Django框架的学习(主要文件介绍、应用、小白必会三板斧)

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 框架的主要文件介绍、应用和小白必会三板斧。

相关标签:学习
其他信息

其他资源

Top