新建Django项目+本地Mysql数据库demo
1、当前路径下指定虚拟环境激活
a123456@zbMacBook-Pro demo % source /Users/a123456/pyenv/django_xb//bin/activate (django_xb) a123456@zbMacBook-Pro demo % pip list Package Version ------------------ ---------- asgiref 3.11.0 certifi 2025.11.12 cffi 2.0.0 charset-normalizer 3.4.4 cryptography 46.0.3 Django 3.2.16 idna 3.11 pip 25.3 pycparser 2.23 PyMySQL 1.0.2 pytz 2025.2 requests 2.32.5 setuptools 65.5.1 sqlparse 0.5.5 urllib3 2.6.2 wheel 0.38.4
2、执行 Django 项目创建命令,<project_name>替换为你的项目名称
django-admin startproject <project_name> (django_xb) a123456@zbMacBook-Pro demo % django-admin startproject django_xb
3、Django项目下,新建模块
python manage.py startapp tools
3.1 目录结构
tools/ ├── __init__.py # 标识该目录为Python包 ├── admin.py # 配置Django后台管理该app的模型 ├── apps.py # app的核心配置文件(包含app元数据) ├── migrations/ # 存储模型迁移文件(数据库同步相关) │ └── __init__.py ├── models.py # 定义app的数据模型(对应数据库表) ├── tests.py # 编写该app的单元测试用例 └── views.py # 编写该app的视图逻辑(处理请求、返回响应)
4、注册app+配置数据库链接,找到主项目目录下的setting.py文件
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tools'
]
# Database
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_demo',
"USER": 'root',
"PASSWORD": "123456",
"HOST": 'localhost',
"PORT": 3306,
"CHARSET": "UTF-8"
},
}
注意:这时候启动项目有个坑,启动django项目的时候报错
# python manage.py runserver 0.0.0.0:8080
Connected to pydev debugger (build 231.9011.38) Watching for file changes with StatReloader Traceback (most recent call last): File "/Users/a123456/pyenv/django_xb/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 15, in <module> import MySQLdb as Database ModuleNotFoundError: No module named 'MySQLdb' The above exception was the direct cause of the following exception:
解决方法:找到主项目下的初始化文件__init__.py
import pymysql # 让 Django 把 pymysql 当作 MySQLdb 来使用 pymysql.install_as_MySQLdb()
5、新模块定义数据模型 models.py
from django.db import models
# Create your models here.
class Emp(models.Model):
id = models.CharField(max_length=50, primary_key=True, verbose_name="主键ID")
name = models.CharField(max_length=255, verbose_name="员工名称")
age = models.IntegerField(default=0, verbose_name="年龄")
class Meta:
db_table = 'emp'
verbose_name = "员工表"
5.1 生成迁移文件
# 生成迁移文件 python manage.py makemigrations # 指定模块生成迁移文件 python manage.py makemigrations tools # 执行迁移 python manage.py migrate
6、编写视图函数 views.py
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_GET
from .models import Emp
@csrf_exempt
@require_GET
def emp_list(request):
"""获取员工列表"""
emps = Emp.objects.all().values()
return JsonResponse({
'code': 0,
'msg': "员工列表",
'data': list(emps)
})
7、新模块下创建urls.py
from django.urls import path
from .views import emp_list
app_name = 'tools'
urlpatterns = [
path('emp/list', emp_list, name="emp_list"),
]
8、将路由配置到主项目下的urls
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('tools/', include('tools.urls')),#新模块路由配置到这里
]
9、启动项目
(django_xb) a123456@zbMacBook-Pro django_zb % python manage.py runserver 0.0.0.0:8080 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). December 31, 2025 - 06:52:22 Django version 3.2.16, using settings 'django_zb.settings' Starting development server at http://0.0.0.0:8080/ Quit the server with CONTROL-C.
10、接口访问

11、学习后总结,待补充

浙公网安备 33010602011771号