当前位置: 首页 > news >正文

北京移动网站建设公司价格中国建设网app下载

北京移动网站建设公司价格,中国建设网app下载,福州网站建设 联系yanktcn 04,做佛像在什么网站发贴效果好点文章目录 一、基本了解二、一对一关系三、一对多关系3.1 增删改查3.2 案例#xff1a;应用详情页3.2 案例#xff1a;新建应用页 四、多对多关系4.1 增删改查4.2 案例#xff1a;应用详情页4.3 案例#xff1a;部署应用页 一、基本了解 常见数据模型关系#xff1a; 一对一… 文章目录 一、基本了解二、一对一关系三、一对多关系3.1 增删改查3.2 案例应用详情页3.2 案例新建应用页 四、多对多关系4.1 增删改查4.2 案例应用详情页4.3 案例部署应用页 一、基本了解 常见数据模型关系 一对一(one-to-one)OneToOneField。一个表中的每条记录对应另一个表中的每条记录使用OneToOneField建立关系。一对多多对一(one-to-many)ForeignKey多对多many-to-manyManyToManyField所谓的一对一、一对多是指数据库中的表之间的关系。 二、一对一关系 应用场景当一张表想扩展字段最常用的方式就是在这个表添加一个对一关系创建第二张表第二张表的id字段余第一张表的id字段关联在一起以此起到一对一。 1.修改模型类文件myapp/models.py新增一个类创建第二张表。 class IdCard(models.Model):number models.CharField(max_length20, verbose_name身份证号)address models.CharField(max_length50, default武汉)user models.OneToOneField(User,on_deletemodels.CASCADE) # 定义一对一的模型关系2.生成迁移文件并同步。 python manage.py makemigrations python manage.py migrate3.添加数据。 ##################################################### ##往已有数据的myapp_user表中添加新数据该条新数据中包含身份证号、地址信息。 user_obj User.objects.create(useralan,name阿兰,sex女,age25,label运营,漂亮,喜欢购物) ##先往母表myapp_user表中添加。 IdCard.objects.create(useruser_obj, number456789, address北京) ##再往子表myapp_idcard表中添加此处的user是模型类中定义的user。##################################################### ##向已有用户添加身份证信息 user_obj User.objects.get(userqingjun) IdCard.objects.create(useruser_obj,number123456789, address杭州)4.查询数据。 ##################################################### 反向查询通过用户查到身份证信息user-idcard user User.objects.get(userqingjun) print(user.idcard.number) print(user.idcard.address)##################################################### 正向查询从身份证表查用户idcard-user idcard IdCard.objects.get(user_id1) print(idcard.user.user) print(idcard.user.name)5.修改数据。 user_obj User.objects.get(userqingjun) ##################################################### # 修改子表中的身份证信息 user_obj.idcard.address河南 user_obj.idcard.save() ##################################################### # 修改母表中的用户信息 user_obj.age 38 user_obj.save()6.删除数据。 ##删除“阿兰”用户的所有信息包括子表中的“身份证号”、“地址” User.objects.filter(useralan).delete()三、一对多关系 一对一是表与表之间的关系而一对多、多对多是表与表中数据的关系。 一对多A表中的某个记录对应B表中的多条记录使用ForeignKey建立关系。 应用场景项目部署涉及表项目表、应用表、服务器表等等。 一对多一个项目有多个应用一个应用只能属于一个项目。多对多一个应用部署到多台服务器一个服务器部署多个应用。 3.1 增删改查 1.修改模型类文件myapp/models.py新增模型类创建项目中的三张表。 ##第一张表项目表。 class Project(models.Model):name models.CharField(max_length30)describe models.CharField(max_length100, nullTrue)datetime models.DateTimeField(auto_now_addTrue)def __str__(self):return self.nameclass Meta:db_table projectverbose_name_plural 项目##第二张表应用表。 class App(models.Model):name models.CharField(max_length30)describe models.CharField(max_length100, nullTrue)datetime models.DateTimeField(auto_now_addTrue)project models.ForeignKey(Project, on_deletemodels.CASCADE) # 定义一对多的模型关系def __str__(self):return self.nameclass Meta:db_table appverbose_name_plural 应用##第三张表服务器表。 class Server(models.Model):hostname models.CharField(max_length30)ip models.GenericIPAddressField()describe models.CharField(max_length100, nullTrue)def __str__(self):return self.hostnameclass Meta:db_table serververbose_name_plural 服务器2.生成迁移文件并同步查看数据库表。 python manage.py makemigrations python manage.py migrate3.新增数据。 from myapp.models import Project,App ####################################################################### 往项目表中插入数据添加已知的项目名称、项目描述信息。 Project.objects.create(name电商项目,describe电商项目描述...) Project.objects.create(name在线教育项目,describe在线教育项目描述...) Project.objects.create(name大数据项目,describe大数据项目描述...) ####################################################################### 往应用表中插入信息将应用表与项目表关联在一起。 project_obj Project.objects.get(name电商项目) App.objects.create(nameproduct,describe商品服务,projectproject_obj) project_obj Project.objects.get(name大数据项目) App.objects.create(namesearch,describe搜索服务,projectproject_obj) project_obj Project.objects.get(name电商项目) App.objects.create(nameorder,describe订单服务,projectproject_obj)4.查询数据。 ####################################################################### 正向查询通过应用名称查询所属项目app-project ##查询某个应用所属项目。 app App.objects.get(nameproduct) # 获取应用 app.project.name # 根据获取的应用查询对应项目名称 ##查询所有应用所属项目。 app_list App.objects.all() for i in app_list:print(i.name, i.project.name, i.project.describe) ####################################################################### 反向查询通过项目名称查询有哪些应用project-app ##查询某个项目有哪些应用 project Project.objects.get(name电商项目) # 获取项目 project.app_set.all() # 根据获取的项目查询所有应用 ##查询所有项目有哪些引用 project Project.objects.all() for i in project:print(i.name, i.app_set.all()) 3.2 案例应用详情页 1.前端正向查询查应用数据。 ################################################### 1.定义根路由规则ORM/urls.py from django.urls import path,include,re_path urlpatterns [path(myapp/,include(myapp.urls)), ] ################################################### 2.定义子路由规则ORM/myapp/urls.py from django.urls import path from myapp import views urlpatterns [path(app,views.app) ] ################################################### 3.定义视图ORM/myapp/views.py from django.shortcuts import render from myapp.models import Project,App def app(request):app App.objects.all()return render(request, app.html, {app: app}) ################################################### 4.定义html模板templates/app.html !DOCTYPE html html langen headmeta charsetUTF-8title项目表单/title /head body table border1theadtrth应用名称/thth应用描述/thth所属项目/th/tr/theadtbody{% for i in app %}trtd{{ i.name }}/tdtd{{ i.describe }}/tdtd{{ i.project.name}}/td/tr{% endfor %}/tbody /body /html2.前端反向查询查项目数据。 ################################################### 1.定义根路由规则ORM/urls.py from django.urls import path,include,re_path urlpatterns [path(myapp/,include(myapp.urls)), ] ################################################### 2.定义子路由规则ORM/myapp/urls.py from django.urls import path from myapp import views urlpatterns [path(project,views.project), ] ################################################### 3.定义视图ORM/myapp/views.py from django.shortcuts import render from myapp.models import Project,App def project(request):project_list Project.objects.all()return render(request, project.html, {project_list: project_list}) ################################################### 4.定义html模板templates/project.html !DOCTYPE html html langen headmeta charsetUTF-8title项目表单/title /head body table border1theadtrth项目名称/thth项目描述/thth所有应用/th/tr/theadtbody{% for i in project_list %}trtd{{ i.name }}/tdtd{{ i.describe }}/tdtd{% for n in i.app_set.all %}{{ n }}{% endfor %}/td/tr{% endfor %}/tbody /body /html3.2 案例新建应用页 新建应用页页面可添加应用并可选项目。 1.前端添加新应用后端数据入库。 ################################################### 1.定义根路由规则ORM/urls.py from django.urls import path,include,re_path urlpatterns [path(myapp/,include(myapp.urls)), ] ################################################### 2.定义子路由规则ORM/myapp/urls.py from django.urls import path from myapp import views urlpatterns [path(app_add,views.app_add), ] ################################################### 3.定义视图ORM/myapp/views.py from django.shortcuts import render from myapp.models import Project,App def app_add(request):if request.method GET:project_list Project.objects.all()return render(request,app_add.html, {project_list: project_list})elif request.method POST:app_name request.POST.get(app-name)app_describe request.POST.get(app-describe)project_name request.POST.get(project-name)project_list Project.objects.all()if not app_name:msg 添加字段异常return render(request, app_add.html, {project_list: project_list, msg: msg})try:project_obj Project.objects.get(nameproject_name)App.objects.create(nameapp_name, describeapp_describe, projectproject_obj)msg 添加成功code 0except:msg 添加失败code 1return render(request, app_add.html, {project_list: project_list, msg: msg,code:code}) ################################################### 4.定义html模板templates/app_add.html !DOCTYPE html html langen headmeta charsetUTF-8title创建应用/title /head body form action methodpost应用名称 : input typetext nameapp-namebr应用描述 : input typetext nameapp-describebr所属项目 :select nameproject-name id{% for i in project_list %}option value{{ i.name }}{{ i.name }}/option{% endfor %}/selectbrbutton typesubmit创建/buttonbutton typereset清空/button{{ msg }} /form /body /html2.前端页面添加新应用。 四、多对多关系 多对多A表中的某个记录对应B表中的多条记录B表中的某个记录对应A表中多条记录。使用ManyToManyField建立关系。过程中Django会自动创建一个表来管理多对多关系称为中间表这个中间表的名称使用多对多的名称和包含这张表的模型的名称生成也可以使用db_table选项指定这个中间表名称。 应用场景一个应用部署到多台服务器一个服务器部署多个应用。 4.1 增删改查 1.修改模型类文件myapp/models.py将server表和app表进行关联。 ##第三张表服务器表。 class Server(models.Model):hostname models.CharField(max_length30)ip models.GenericIPAddressField()describe models.CharField(max_length100, nullTrue)app models.ManyToManyField(App) ##添加此行。def __str__(self):return self.hostnameclass Meta:db_table serververbose_name_plural 服务器2.生成迁移文件并同步查看中间表。 python manage.py makemigrations python manage.py migrate3.往server表添加数据。 from myapp.models import App,Project,Server Server.objects.create(hostnameec-test1, ip192.168.1.10, describe电商项目测试服务器1) Server.objects.create(hostnameec-test2, ip192.168.1.11, describe电商项目测试服务器2) Server.objects.create(hostnamebigdata-test1, ip192.168.1.11, describe大数据项目测试服务器1)4.将一个新应用部署到指定服务器信息添加到数据库中。 project_obj Project.objects.get(name电商项目) app App.objects.create(nameportal,describe前端服务,projectproject_obj) server Server.objects.get(hostnameec-test1) server.app.add(app)5.查询数据。 ####################################################################### 正向查询查询服务器部署了哪些应用server-app ##查询某台服务器部署了哪些应用 server Server.objects.get(hostnameec-test1) server.app.all() ##查询所有服务器部署了哪些应用 server_list Server.objects.all() for i in server_list:print(i.hostname, i.app.all()) ####################################################################### 反向查询查看某个应用部署到哪些服务器app-server ##查询某个应用部署到哪些服务器 app App.objects.get(nameportal) app.server_set.all() ##查询所有应用部署到哪些服务器 app_list App.objects.all() for i in app_list:print(i.name, i.server_set.all())6.根据已存在的app信息将其添加到服务器表中。 ##获取应用表中的app_id字段进行关联。 app App.objects.get(nameqingjun) app.id server Server.objects.get(hostnamebigdata-test1) server.app.add(3) #将应用id3关联该服务器。 server.app.add(1,2,3) #将应用id1、2、3关联该服务器。7.删除将id3的应用与ec-test1服务器取消关联。 server Server.objects.get(hostnameec-test1) server.app.remove(3) 8.清空将ec-test1服务器取消所有应用关联。 server Server.objects.get(hostnameec-test1) server.app.clear()4.2 案例应用详情页 1.前端正向查询。 ################################################### 1.定义根路由规则ORM/urls.py from django.urls import path,include,re_path urlpatterns [path(myapp/,include(myapp.urls)), ] ################################################### 2.定义子路由规则ORM/myapp/urls.py from django.urls import path from myapp import views urlpatterns [path(server,views.server), ] ################################################### 3.定义视图ORM/myapp/views.py from django.shortcuts import render from myapp.models import Project,App,Server def server(request):server_list Server.objects.all()return render(request, server.html, {server_list: server_list}) ################################################### 4.定义html模板templates/server.html !DOCTYPE html html langen headmeta charsetUTF-8title服务器详情/title /head body table border1theadtrth服务器名称/ththIP/thth所有应用/th/tr/theadtbody{% for i in server_list %}trtd{{ i.hostname }}/tdtd{{ i.ip }}/tdtd{% for n in i.app.all %}{{ n }}{% endfor %}/td/tr{% endfor %}/tbody /body /html2.前端反向查询查项目数据。 ################################################### 1.定义根路由规则ORM/urls.py from django.urls import path,include,re_path urlpatterns [path(myapp/,include(myapp.urls)), ] ################################################### 2.定义子路由规则ORM/myapp/urls.py from django.urls import path from myapp import views urlpatterns [path(app_server, views.app_server), ] ################################################### 3.定义视图ORM/myapp/views.py from django.shortcuts import render from myapp.models import Project,App def app_server(request):app_server App.objects.all()return render(request, app_server.html, {app_server: app_server}) ################################################### 4.定义html模板templates/app_server.html !DOCTYPE html html langen headmeta charsetUTF-8title应用详情/title /head body table border1theadtrth应用名称/thth服务器列表/th/tr/theadtbody{% for i in app_server %}trtd{{ i.name}}/tdtd{% for n in i.server_set.all %}{{ n }}{% endfor %}/td/tr{% endfor %}/tbody /body /html ################################################### 5.将search应用部署在bigdata-test1服务器中将该信息填入到数据库。 app App.objects.get(namesearch) server Server.objects.get(hostnamebigdata-test1) server.app.add(app) 4.3 案例部署应用页 1.前端添加新应用后端数据入库。 ################################################### 1.定义根路由规则ORM/urls.py from django.urls import path,include,re_path urlpatterns [path(myapp/,include(myapp.urls)), ] ################################################### 2.定义子路由规则ORM/myapp/urls.py from django.urls import path from myapp import views urlpatterns [path(app_server, views.app_server), ] ################################################### 3.定义视图ORM/myapp/views.py from django.shortcuts import render,redirect from myapp.models import Project,App def app_add(request):if request.method GET:project_list Project.objects.all()server_list Server.objects.all()return render(request,app_add.html, {project_list: project_list,server_list:server_list})elif request.method POST:app_name request.POST.get(app-name)app_describe request.POST.get(app-describe)project_name request.POST.get(project-name)server_list request.POST.getlist(server-list) # 使用getlist获取用于获取表单多少值if not app_name:msg 添加字段异常return render(request, app_add.html)try:project_obj Project.objects.get(nameproject_name)app App.objects.create(nameapp_name, describeapp_describe, projectproject_obj)# 将服务器(可能多个)关联应用print(server_list)for server in server_list:server Server.objects.get(hostnameserver)server.app.add(app)msg 添加成功code 0except:msg 添加失败code 1return redirect(app_add) ################################################### 4.定义html模板templates/app_add.html !DOCTYPE html html langen headmeta charsetUTF-8title创建应用/title /head body form action methodpost应用名称 : input typetext nameapp-namebr应用描述 : input typetext nameapp-describebr所属项目 :select nameproject-name id{% for i in project_list %}option value{{ i.name }}{{ i.name }}/option{% endfor %}/selectbr部署服务器 :select nameserver-list multiple{% for i in server_list %}option value{{ i.hostname }}{{ i.hostname }}/option{% endfor %}br/selectbrbutton typesubmit创建/buttonbutton typereset清空/button{{ msg }} /form /body /html ################################################### 5.修改templates/app.html模板内容显示服务器列表信息。 !DOCTYPE html html langen headmeta charsetUTF-8title应用表单/title /head body table border1theadtrth应用名称/thth应用描述/thth所属项目/thth服务器列表/th/tr/theadtbody{% for i in app %}trtd{{ i.name }}/tdtd{{ i.describe }}/tdtd{{ i.project.name}}/tdtd{% for n in i.server_set.all %}{{ n }}{% endfor %}/td/tr{% endfor %}/tbody /body /html
http://www.w-s-a.com/news/878654/

相关文章:

  • 网站建设核心优势seo求职信息
  • 网站手册自己在百度上可以做网站吗
  • 影楼网站源码建行业网站的必要性
  • 深圳app网站设计软件开发公司税收优惠政策
  • 北京市中关村有哪家可以做网站维护客户管理系统 wordpress
  • 做网站拉客户有效吗全景图网页制作工具
  • 网站建设公司行业建设网站需要提供什么资料
  • 别人的做网站网页打不开图片
  • 北京专业网站设计推荐怎么建立网站网址
  • 上海网站建设开发公司哪家好网站数据搬家
  • 杭州建站平台哪里有免费的网站推广软件
  • 深圳极速网站建设服务什么网站可以做产品入驻
  • 淄博易宝网站建设app推广拉新公司
  • 营销型外贸网站建设软件备案域名出租
  • 网站域名禁止续费m99ww094cn 苍井空做的网站
  • 上海建设工程网站大同网站建设熊掌号
  • 设计类书籍网站江苏网站建设简介模板
  • 手机企业网站推广c 手机app开发
  • 网站建设需要多少天凡客建设网站稳定吗
  • 房天下网站建设女生说wap是什么意思
  • 网站开发安全机制北京做网站多少钱合理
  • 扁平化 公司网站建设大型视频网站需要的资金量
  • 免费建各种网站淄博网站建设yx718
  • 凡科网建站入门教程运城市网站建设
  • 黄浦区未成年人思想道德建设网站oa系统是什么
  • 微信里的网站怎么做电子商务网站开发平台
  • 易企秀网站怎么做轮播图网站建设张世勇
  • 网站备案幕布尺寸建立网页的几个步骤
  • pc网站页面找出网站所有死链接
  • 专业做seo的网站网站内连接