赞
踩
Fengfl1222
,名称:insist科技。要资料
,申请备注为:CSDN+地方
,如CSDN山东。想接项目一起努力进步
,申请备注为:CSDN+地方+项目
,如CSDN+山东+项目,添加成功之后,可以发一份简历。详细创建请看博文一:Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
对前面的搭建流程梳理简化。
django-admin startproject test_models_django
:创建项目test_models_djangocd test_models_django
python manage.py migrate
python manage.py runserver
:运行项目http://127.0.0.1:8000/
,结果如下,Django项目搭建成功pycharm
打开如下。配置环境啥的请看博文一。python manage.py startapp app01
:创建应用app01
主包中配置应用app01
,如下所示:
app01
中的urls.py
和views.py
。(没有则新建)
主包中的urls.py
浏览器输入网址:http://127.0.0.1:8000/hello
,结果如下,应用搭建成功
主包中settings.py
。
默认的数据库配置如下。
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": BASE_DIR / "db.sqlite3",
}
}
修改后如下所示
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "数据库名",
"USER": "用户",
"PASSWORD": "密码",
"HOST": "ip",
"PORT": "3306"
}
}
保存后,系统报错,缺少mysql插件,需要安装mysqlclient
,
执行以下命令安装
pip install mysqlclient
或者使用conda
来安装
conda install mysqlclient
python manage.py runserver
:然后成功运行。
app01
包中model.py
,添加用户类User
。Meta
中定义表的元数据,我这里指定了表的名称为 f_user_01
from django.db import models # Create your models here. class User_01(models.Model): u_id = models.AutoField(primary_key=True) username = models.CharField(max_length=64, null=True) name = models.CharField(max_length=64, null=True) password = models.CharField(max_length=64, null=True) sex = models.CharField(max_length=64, null=True) age = models.CharField(max_length=64, null=True) phone = models.CharField(max_length=64, null=True) email = models.CharField(max_length=64, null=True) unit = models.CharField(max_length=64, null=True) avatar = models.CharField(max_length=64, null=True) status = models.CharField(max_length=64, null=True) create_time = models.CharField(max_length=64, null=True) delete_time = models.CharField(max_length=64, null=True) update_time = models.CharField(max_length=64, null=True) class Meta: db_table = "f_user_01"
# 生成迁移数据
python manage.py makemigrations
# 生成数据库表
python manage.py migrate
执行完第一个命令,会在当前包app01中生成初始化文件,仅仅对我们的类做了一个解读。
执行完第二个命令,会在数据库中生成数据库表。
数据库表生成如下所示,只有f_user_01
是我们要生成的表,上面的其他表都是Django系统默认生成的表。暂且不管。(未圈中的与本项目无关)
models.py
中创建了对象类,应该怎么和自己创建的数据库表对应呢。model.py
不创建新表,直接操作数据库中对应的表呢。models.py
,在执行迁移命令,看是否还会生成新的表呢。数据库创建表 f_user
。具体如下所示。(如上面截图所示,我这里已经创建好了)
models.py
添加User
类,与数据库表中字段一一对应。 和f_user_01
表一样,唯一的不一样就说最后的时间类型改为DateTime
。数据库也修改成相应的了。
class User(models.Model): u_id = models.AutoField(primary_key=True) username = models.CharField(max_length=64, null=True) name = models.CharField(max_length=64, null=True) password = models.CharField(max_length=64, null=True) sex = models.CharField(max_length=64, null=True) age = models.CharField(max_length=64, null=True) phone = models.CharField(max_length=64, null=True) email = models.CharField(max_length=64, null=True) unit = models.CharField(max_length=64, null=True) avatar = models.CharField(max_length=64, null=True) status = models.CharField(max_length=64, null=True) create_time = models.CharField(max_length=64, null=True) delete_time = models.CharField(max_length=64, null=True) update_time = models.CharField(max_length=64, null=True) class Meta: db_table = "f_user"
执行命令如下,看是否会报错等其他情况。
# 生成迁移数据
python manage.py makemigrations
# 生成数据库表
python manage.py migrate
执行第一个命令后,migrations
中生成了一个新的映射迁移。新的类,生成了一个新的模型类。
执行第二个命令后,报错,如下:(说明表已经存在)
models.py
中指定了表名,如果数据库表中没有则创建,有则报错。
接下来对这两个表进行添加操作。
from django.http import HttpResponse from app01 import models import json def hello_world(request): return HttpResponse("app01 Hello, World!") def addUser01(request): models.User_01.objects.create(username='admin', name='冯坚持', password='123456', sex='男', age='18', phone='1234567890', email='123456789@163.com', unit='1-1-1', avatar='asdad', status='1', create_time='20240104 12:12:22', delete_time='20240104 12:12:22', update_time='20240104 12:12:22') result = { 'code': 0, 'msg': 'success', 'data': '' } return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello_world),
path('addUser01/', views.addUser01),
]
http://127.0.0.1:8000/addUser01/
from django.http import HttpResponse from app01 import models import json from django.utils import timezone from datetime import datetime def addUser(request): print(timezone.now()) # 使用 timezone.now() 获取当前时间 print(datetime(2023, 6, 6, 12, 0, 0)) # 手动设置 datetime 值,可以使用 Python 的 datetime 模块 models.User.objects.create(username='admin', name='冯坚持', password='123456', sex='男', age='18', phone='1234567890', email='123456789@163.com', unit='1-1-1', avatar='asdad', status='1', create_time=timezone.now(), delete_time=timezone.now(), update_time=timezone.now()) result = { 'code': 0, 'msg': 'success', 'data': '' } return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello_world),
path('addUser01/', views.addUser01),
path('addUser/', views.addUser),
]
http://127.0.0.1:8000/addUser/
在运行界面,发现如下提示。
意思是有一个没有应用的迁移类,因为在第四章,执行了命令python manage.py makemigrations
,所以在migrations中生成了对应迁移类User,但是其表f_user在数据库中已经存在了,所以,在执行第二个命令python manage.py migrate
报错了,提示表已经存在。
这就是出现上面警告的原因。
对于数据库中已经存在的表,只在models.py中声明即可,不用执行迁移的两个命令。现在目前的情况,删除0002__user.py
即可。
在执行f_user
表的添加请求测试如下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。