模式切换
Web 开发与 API
Flask 框架
基本路由与视图函数
- Flask 是一个微框架,使用非常简单。通过路由(
route
)来处理不同的 URL 请求。
python
from flask import Flask
app = Flask(__name__)
# 路由与视图函数
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
- 路由 是指将 URL 与视图函数绑定,通过
@app.route()
来定义不同的路径。 - 视图函数 是用于处理客户端请求并返回响应的函数。
模板渲染
Flask 使用 Jinja2 模板引擎 来渲染 HTML 页面,可以将动态内容嵌入到 HTML 中。
python
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', name="Flask")
# 在 templates 文件夹中创建 index.html 文件:
# <html>
# <body>
# <h1>Hello {{ name }}</h1>
# </body>
# </html>
通过 render_template
方法,可以将动态数据传递给 HTML 模板,模板中的 是占位符,会被传入的变量替代。
RESTful API 开发
Flask 可以方便地开发 RESTful API,处理 GET、POST、PUT、DELETE 等 HTTP 方法。
python
from flask import Flask, jsonify, request
app = Flask(__name__)
# 模拟的数据库
data = {'items': ['apple', 'banana', 'orange']}
@app.route('/items', methods=['GET'])
def get_items():
return jsonify(data)
@app.route('/items', methods=['POST'])
def add_item():
new_item = request.json['item']
data['items'].append(new_item)
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
- GET 请求 用于获取数据。
- POST 请求 用于提交数据。通过
request.json
获取请求体中的 JSON 数据。
Django 框架
项目结构
Django 是一个功能齐全的 Web 框架,带有强大的 MVC 架构(在 Django 中称为 MVT:Model-View-Template)。
项目的典型结构如下:
myproject/
manage.py
myapp/
__init__.py
models.py
views.py
urls.py
templates/
myapp/
index.html
manage.py
:Django 的项目管理工具,负责项目的启动和管理命令。models.py
:定义数据库模型(ORM)。views.py
:处理用户请求和返回响应。urls.py
:定义 URL 与视图的映射关系。templates/
:存放 HTML 模板文件。
模型、视图、模板(MVT)
- 模型(Model):定义数据库表及其字段,Django 使用 ORM(对象关系映射)与数据库交互。
python
# models.py
from django.db import models
class Item(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2)
- 视图(View):在
views.py
中编写视图函数,负责处理请求、获取数据并返回响应。
python
# views.py
from django.shortcuts import render
from .models import Item
def item_list(request):
items = Item.objects.all() # 查询所有Item数据
return render(request, 'item_list.html', {'items': items})
- 模板(Template):使用 HTML 模板显示数据。
html
<!-- item_list.html -->
<html>
<body>
<h1>Item List</h1>
<ul>
{% for item in items %}
<li>{{ item.name }}: ${{ item.price }}</li>
{% endfor %}
</ul>
</body>
</html>
数据库操作与 ORM
- Django ORM 是 Django 与数据库交互的核心,通过定义模型类来创建、查询、更新、删除数据库记录。
- 例如,创建一个数据库表对应的模型
Item
,并可以通过Item.objects.create()
来创建新记录。
python
# 添加一个新商品
item = Item.objects.create(name='Apple', price=1.99)
通过 Django 的 ORM,开发者不需要编写 SQL 语句,就能进行数据库操作。
HTTP 与 API 请求
使用 requests 进行 HTTP 请求
requests
是处理 HTTP 请求的强大库,支持 GET、POST、PUT、DELETE 等操作。
python
import requests
# 发送 GET 请求
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.json()) # 返回 JSON 数据
# 发送 POST 请求
payload = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=payload)
print(response.json())
requests.get()
发送 GET 请求,获取数据。requests.post()
发送 POST 请求,向服务器提交数据。
REST API 与 JSON 解析
在 Web 开发中,REST API 是一种常见的 API 设计风格,它使用 HTTP 方法来操作资源,并通常返回 JSON 格式的数据。
通过 requests
进行 REST API 调用并解析返回的 JSON 数据:
python
import requests
# 发送请求并获取JSON响应
response = requests.get('https://jsonplaceholder.typicode.com/posts')
data = response.json()
# 遍历并解析数据
for post in data:
print(f"Title: {post['title']}")
print(f"Body: {post['body']}")
print('---')