面试题答案
一键面试Flask
- 数据库连接建立:
- Flask 本身不自带数据库连接管理,通常借助第三方扩展,如
Flask - SQLAlchemy
。它的数据库连接配置相对灵活,可根据不同需求简单或复杂配置。例如,使用Flask - SQLAlchemy
时,只需在初始化扩展时设置数据库 URI 即可:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///test.db' db = SQLAlchemy(app)
- Flask 本身不自带数据库连接管理,通常借助第三方扩展,如
- 模型定义:
- 当使用
Flask - SQLAlchemy
,模型定义较为简洁直观。模型类继承自db.Model
,通过类属性定义表结构。例如:
class User(db.Model): id = db.Column(db.Integer, primary_key = True) username = db.Column(db.String(80), unique = True, nullable = False) email = db.Column(db.String(120), unique = True, nullable = False)
- 当使用
Django
- 数据库连接建立:
- Django 有内置的数据库连接管理机制。在项目的
settings.py
文件中统一配置数据库连接信息,支持多种数据库(如 MySQL、PostgreSQL 等)。配置相对规范且集中,例如配置 MySQL 数据库:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': '127.0.0.1', 'PORT': '3306', } }
- Django 有内置的数据库连接管理机制。在项目的
- 模型定义:
- Django 的模型定义遵循严格的类继承和元类设置。模型类继承自
models.Model
,字段定义使用models
模块下的各种字段类型。模型类中还可以通过Meta
类定义表的元数据,如排序方式、表名等。例如:
from django.db import models class User(models.Model): id = models.AutoField(primary_key = True) username = models.CharField(max_length = 80, unique = True) email = models.EmailField(unique = True) class Meta: ordering = ['username']
- Django 的模型定义遵循严格的类继承和元类设置。模型类继承自
差异总结
- 数据库连接:
- Flask 依赖扩展建立数据库连接,更灵活;Django 有内置的统一配置方式,更规范和集中。
- 模型定义:
- Flask 的模型定义相对简洁,重点在定义字段;Django 的模型定义更复杂,除了字段定义,还可通过
Meta
类进行更多元数据设置,如排序、表名等,并且字段类型命名更明确(如EmailField
)。
- Flask 的模型定义相对简洁,重点在定义字段;Django 的模型定义更复杂,除了字段定义,还可通过