跳转至

路由与视图函数

问题153:什么是路由?

答: 路由是Web应用中URL与处理函数之间的映射关系:

from flask import Flask

app = Flask(__name__)

# 基本路由
@app.route('/')
def home():
    return 'Welcome to my website!'

@app.route('/about')
def about():
    return 'This is the about page'

@app.route('/user/<username>')
def user_profile(username):
    return f'Hello, {username}!'

if __name__ == '__main__':
    app.run()

问题154:如何定义路由?

答: Flask提供了多种定义路由的方式:

from flask import Flask

app = Flask(__name__)

# 基本路由
@app.route('/')
def index():
    return 'Home page'

# 带参数的路由
@app.route('/user/<int:user_id>')
def user(user_id):
    return f'User ID: {user_id}'

# 多种HTTP方法
@app.route('/api/data', methods=['GET', 'POST'])
def api_data():
    return 'API endpoint'

# 路由装饰器
def admin_required(f):
    def decorated_function(*args, **kwargs):
        # 检查管理员权限
        return f(*args, **kwargs)
    return decorated_function

@app.route('/admin')
@admin_required
def admin():
    return 'Admin panel'

问题155:什么是视图函数?

答: 视图函数是处理HTTP请求并返回响应的函数:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 简单视图函数
@app.route('/hello')
def hello():
    return 'Hello, World!'

# 带参数的视图函数
@app.route('/greet/<name>')
def greet(name):
    return f'Hello, {name}!'

# 处理不同HTTP方法的视图函数
@app.route('/api/users', methods=['GET', 'POST'])
def users():
    if request.method == 'GET':
        return jsonify({'users': ['Alice', 'Bob']})
    elif request.method == 'POST':
        data = request.get_json()
        return jsonify({'message': 'User created', 'data': data})

# 返回不同响应类型的视图函数
@app.route('/data')
def get_data():
    return jsonify({'status': 'success', 'data': [1, 2, 3]})

@app.route('/html')
def html_response():
    return '<h1>HTML Response</h1>'