记录在使用Django开发过程中遇到的问题No.2
- 1、在一个settings.py的文件中添加上新增的模块名称,如,demos;配置mysql的地址\端口...的
- 2、通知django模型变化了,终端输入:
- 3、接下来可以在新增的模块中写代码了,比如demos模块.首先在demos下的models.py中写实体类, 写完之后呢,终端输入`python manage.py migrate`创建表结构,成功之后去第1步里配置的数据库可以看到自动生成的表格。我这用外键的方式绑定了一张子表,models.ForeignKey(User,on_delete=models.CASCADE,default=""),第一个参数是主表,第二个参数代表当主表删除是,子表执行什么操作,models.CASCADE代表的意思是主表删除,子表也会自动删除
- 4、下面写接口了,子表外键赋值方式是直接把父表对象赋给子表的外键字段了
- 5、写完之后,在settings.py同一目录下找到一个叫urls.py的文件,添加路径。
- 6、配置完之后,终端输入`python manage.py runserver 9000`在指定端口运行,9000是端口号,可以改变的,运行成功终端会返回一个地址给你,复制地址,在后面加上第5步配置的接口路径,就可以访问了,我用的poseman来调试的,
1、在一个settings.py的文件中添加上新增的模块名称,如,demos;配置mysql的地址\端口…的
2、通知django模型变化了,终端输入:
python manage.py makemigrations demos
3、接下来可以在新增的模块中写代码了,比如demos模块.首先在demos下的models.py中写实体类, 写完之后呢,终端输入python manage.py migrate
创建表结构,成功之后去第1步里配置的数据库可以看到自动生成的表格。我这用外键的方式绑定了一张子表,models.ForeignKey(User,on_delete=models.CASCADE,default=""),第一个参数是主表,第二个参数代表当主表删除是,子表执行什么操作,models.CASCADE代表的意思是主表删除,子表也会自动删除
from django.db import models
# Create your models here.
class User(models.Model):
id = models.AutoField(primary_key=True) #注意 这里自动创建的id是int类型
number = models.IntegerField(null=True)
create_date = models.DateTimeField(null=True)
class WorkExperience(models.Model):
id = models.AutoField(primary_key=True)
time_range = models.CharField(max_length=100)
user = models.ForeignKey(User,on_delete=models.CASCADE,default="") #User作为外键,当User删除时,WorkExperenxe也会删除
4、下面写接口了,子表外键赋值方式是直接把父表对象赋给子表的外键字段了
from django.http import HttpResponse,JsonResponse
from users.models import User,WorkExperience
import json
from django.core import serializers
import time
def userAdd(request):
if request.method == "POST":
req = json.loads(request.body) #json格式数据获取 ,这里获取的是前端录入的数据
id = req.get("id")
number = req.get("number ")
create_date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime() #当前时间
userAdd = User( #这是把上面的数据封装到实体类对象
id = id,
number=number,
)
userAdd.save() #对象保存
# 获取工作经历的list
workList = req["workExperience"]
for dictory in workList:
worKId = dictory.get("id")
time_range = dictory["timeRange"]
user = userAdd 子表的外键: 注意 这里是直接把主表对象赋给外键了
WorkExperienceAdd = WorkExperience(
id=worKId,
time_range = time_range,
user = user
)
WorkExperienceAdd.save() #保存子表
# return JsonResponse({"user":user.id,"worKId":WorkExperienceAdd.id}) 这是测试用的,返回保存后主表和子表的id
return JsonResponse({"code":"SUCCESS","msg":"publish user sucess."}) #保存子表
5、写完之后,在settings.py同一目录下找到一个叫urls.py的文件,添加路径。
from django.contrib import admin
from django.urls import path
from demos.src.user import userAdd #导入接口
urlpatterns = [
path('userAdd/',userAdd), #配置路径
]