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

海门网站建设整人网站怎么做

海门网站建设,整人网站怎么做,沈阳市做网站的公司,做网站销售挣钱吗文章目录 基于ORM进行的CURDORM外键关联Django请求的生命周期流程图 基于ORM进行的CURD 本质上就是通过面向对象的方式#xff0c;对数据库的数据进行增、删、改、查。 这里将会将我们之前所有内容结合到一起#xff0c;首先确保基于上序操作已经建立好了UserInfo表#xff… 文章目录 基于ORM进行的CURDORM外键关联Django请求的生命周期流程图 基于ORM进行的CURD 本质上就是通过面向对象的方式对数据库的数据进行增、删、改、查。 这里将会将我们之前所有内容结合到一起首先确保基于上序操作已经建立好了UserInfo表那么我们还需要建立几个HTML文件只需要关注与提交数据有关的标签 user_list作为主页使用 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlescript srchttps://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js/scriptlink hrefhttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css relstylesheetscript srchttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js/script /head bodydiv classcontainerdiv classrowdiv classcol-md-8 col-md-offset-2 h1 classtext-center用户列表展示/h1hra href/add/ classbtn btn-info 添加/atable classtable table-striped table-borderedthreadtrth classtext-centerID/thth classtext-centerusername/thth classtext-centerpassword/thth classtext-centergender/thth classtext-centeraction/th/tr/threadtbody{% for foo in user_obj %}trtd classtext-center {{ foo.id }}/tdtd classtext-center {{ foo.username }}/tdtd classtext-center {{ foo.password }}/tdtd classtext-center {{ foo.gender }}/tdtda href/edit/?id{{ foo.id }} classbtn btn-success stylemargin-left: 65px;修改/anbsp;nbsp;a href/delete/?id{{ foo.pk }} classbtn btn-danger 删除/a/td/tr{% endfor %}/tbody/table/div/div/div /body /html主页已经建立好了现在我们需要配置路由文件urls.py。根据点击主页的按钮跳转的页面来配置路由。 路由文件urls.py配置如下 如果前后端不是同一个人开发的话这些url必须要提前规定好。 针对主页的视图函数 add.html用于新增用户的数据页 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlescript srchttps://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js/scriptlink hrefhttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css relstylesheetscript srchttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js/script /head bodydiv classcontainerdiv classrowdiv classcol-md-8 col-md-offset-2h1 classtext-center添加用户/h1hrform action methodpostdiv classform-groupusername: input typetext classform-control nameusername placeholder请输入用户名/divdiv classform-grouppassword: input typepassword classform-control namepassword placeholder请输入密码/divdiv classform-groupgender: input typetext classform-control namegender placeholder请输入性别/divdiv classform-groupinput typesubmit classbtn btn-block btn-success value提交/div/form/div/div/div /body /html根据上面表单的action可以看出数据是提交到原地提交post请求的。 add页面视图函数如下: def add(request):if request.method POST: # 接收用户增加数据发送的post请求username request.POST.get(username)password request.POST.get(password)gender request.POST.get(gender)数据库中添加数据的操作数据库添加数据add_objmodels.UserInfo.objects.create(usernameusername, passwordpassword, gendergender)返回的是当前记录的对象# print(add_obj) # jack# print(add_obj.gender) # malereturn redirect(/user_list/) # 重定向到主页return render(request, add.html, locals())当原地提交post请求的数据会被我们当前视图函数接收到然后再写入数据库内。 此时我们就可以从主页点击添加按钮然后输入完毕后来检验效果 此时已经达到了数据同步到web页面的效果了那么我们再来尝试修改。 edit.html修改数据的页面 !DOCTYPE html html langen head{% load static %}meta charsetUTF-8titleTitle/titlescript srchttps://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js/scriptlink hrefhttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css relstylesheetscript srchttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js/script /head bodydiv classcontainerdiv classrowdiv classcol-md-8 col-md-offset-2h1 classtext-center修改页面/h1hrform action methodpostdiv classform-groupusername: input typetext classform-control nameusername value{{ edit_obj.username }}/divdiv classform-grouppassword: input typepassword classform-control namepassword value{{ edit_obj.password }}/divdiv classform-groupgender: input typetext classform-control namegender value{{ edit_obj.gender }}/divdiv classform-groupinput typesubmit classbtn btn-block btn-success value提交/div/form/div/div/div /body /html修改页面的套路基本和添加数据页面差不多观察表单的提交地址是原地址再根据input元素的name属性值在后端接收数据。 因为我们在user_list页面内定义了点击修改按钮URL地址中还会携带一个用户的id编号那么我们需要接收这个编号再根据它来修改用户信息。 def edit(request):edit_id request.GET.get(id) # GET可以获取URL内问号后面的数据if request.method POST:username request.POST.get(username)password request.POST.get(password)gender request.POST.get(gender)数据库中的修改字段语法update userinfo set username, password where id1;# 第一种方式models.UserInfo.objects.filter(pkedit_id).update(usernameusername,passwordpassword,gendergender)使用update这种语句方法不需要save保存# 第二种方式edit_obj models.UserInfo.objects.filter(idedit_id).first() # 获取这个用户对象edit_obj.username username # 修改这个用户的姓名edit_obj.password password # 修改这个用户的密码edit_obj.gender gender # 修改性别edit_obj.save() # 将修改后的数据保存到数据库return redirect(/user_list/)return render(request, edit.html, locals())删除自然就不需要什么页面了在主页点击后就会跳转到一个URL执行一个视图函数并且这个URL内携带用户的编号那么基本操作套路就是一样了。 def delete(request):del_id request.GET.get(id)print(del_id)数据库中删除字段语法delete from userinfo where id 1;models.UserInfo.objects.filter(pkdel_id).delete() # 删除数据库内和页面传递过来相同编号的用户return redirect(/user_list/) # 重定向到主页达到一个刷新的效果已经达到了我们预期的效果点击一下删除按钮整行数据。 那么来总结一下上序所操作所用到的内容。 1.查models.User.objects.filter(nameusername, pwdpassword)如何获取对象 可以使用first()方法 如果没有值会返回None 我们if判断即可obj User.object.get(idedit_id) # 获取一个用户对象print(obj.name) # 查询这个用户的name值2.增方法一models.User.objects.create(namejack,password123)# 向数据库写入一条记录name字段值为jackpassword字段值为123方法二obj models.User(usernameusername,passwordpassword,gendergender)obj.save()3.改方法一models.User.objects.filter(id1).update(nametom)方法二obj models.User.objects.filter(id1).first()obj.name tom # 修改这个用户的name属性值obj.age 18 # 修改这个用户的age属性值obj.save() # 将修改后的属性值同步到数据库4.删models.User.objects.filter(id1).delete() # 在数据库内删除这个用户5.获取所有用户对象obj_all User.object.all()也可以用获取局部所有变量的方法locals()6.获取指定一个对象obj User.object.filter(id).first()filter类比数据库中where的使用至此已经完成了基本操作可以通过面向对象的形式来操作数据库里面的数据但前提是模型类是已经存在的数据库表如果不存在则当我们执行迁移时Django帮助我们自动创建。 那么如果要导入已经存在的表到我们的模型里面呢。那么我们来了解一下吧 导入已存在的表 在Django内操作数据库是通过模型models.py里面的类而我们目前只了解怎么通过它创建数据库表而没有了解过如何使用它导入已经存在数据库内的表。 其方式有两种 在模型内按照表的完整数据结构创建类名、类属性整体代码如下 class Book(models.Model):name models.CharField(max_length30, blankTrue, nullTrue)price models.FloatField(blankTrue, nullTrue)author models.CharField(max_length20, blankTrue, nullTrue)class Meta:db_table book会发现多出来一个Meta内部类其作用我们目前不深究知道此时它的作用即可通过db_table属性指定模型类对应的数据库表名。 偷懒方式通过Django自带的命令inspectdb将数据库内的表名生成上面这种形式 为什么不执行迁移操作因为我们并没有向模型类执行新增表、或者新增、修改字段等操作。 ORM外键关联 关联类型主要分为三类 跟MySQL类型一样一对多外键字段建在多的一方多对多外键字段建在第三张关系表一对一外键字段建在查询频率较高的表中ORM一对多外键字段建在多的一方publish models.ForeignKey(toPublish,on_deletemodels.CASCADE)多对多外键字段可以直接写在某张表中 orm会自动帮你创建第三张表authors models.ManyToManyField(toAuthors)一对一外键字段建在查询频率较高的表中detail models.OneToOneField(toAuthorDetail,on_deletemodels.CASCADE)Django1.x版本无需写级联删除级联更新2.x需要此处是以2.x展示class Book(models.Model):title models.CharField(max_length32)# 书与出版社是一对多 书是多publish models.ForeignKey(toPublish,on_deletemodels.CASCADE) 级联删除 注意主键不需要自己去添加ID ORM会自动添加 # 书与作者是多对多authors models.ManyToManyField(toAuthors)class Publish(models.Model):pub_name models.CharField(max_length32)class Authors(models.Model):name models.CharField(max_length32)detail models.OneToOneField(toAuthorDetail,on_deletemodels.CASCADE)class AuthorDetail(models.Model):phone models.BigIntegerField()Django请求的生命周期流程图 django的生命周期是从用户发送HTTP请求数据到网站响应的过程。整个过程的流程包括浏览器发送HTTE请求(通过orm) MySI获取数据-wsgiref服务视图层一中间件-templates模板层-路由层urls-视图层渲染-视图层views- 中间件smodels模型层-响应内容给浏览器一1.首先用户在浏览器中输入一个url发送一个GET方法的reguest请求。2.在django中有一个封装了socket的方法模块wsgiref监听端口接受request请求初步封装传送到中间件。3.由中间件传输到路由系统中进行路由分发匹配对应的视图函数。4.将request请求传输到views视图函数中进行逻辑处理。5.调用models中表对象通过orm操作数据库拿到数据同时去templates中相应的模板进行渲染6.用response响应传输到中间件依次处理响应给浏览器展示给用户Web服务器网关接口Python Web Server Gateway Interface缩写为WSGI是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。当然我们也可以称它为WSGI协议 而wsgiref模块就是python基于WSGI协议开发的服务模块。其支持的并发量不高但用于我们开发环境足够了待程序的上线再使用其他的Web服务提高我们运行程序的服务器性能。
http://www.sadfv.cn/news/125378/

相关文章:

  • 大学招生网站建设网站的标签修改
  • 做黄金的人喜欢逛那些网站应聘网站优化的简历怎么做
  • 淄博网站推广那家好做网站找
  • 免费1级做爰片免费网站东莞手机网站建设公司
  • 电影资源分享网站怎么做的semir是什么牌子衣服
  • 望谟网站建设电子商务网站建设的准备工作有哪些
  • 增城网站怎么做seo产地证哪个网站做
  • 销售网站建设的短文制作网页一般需要兼容哪些软件
  • 做网站前台开发学习微信营销和微博营销的区别
  • 网站添加地图导航伯爵手表网站
  • 自己网站的关键词怎么改wordpress 加密连接
  • 天津网站优化多少钱什么网站会更有浏览量
  • 做网站数据库怎么整东西湖网站建设公司
  • 做网站的前景上海新闻综合频道直播
  • 贸易网站怎么做现在宁波做网站
  • 网站制作时间表免费建站软件哪个最好
  • 网站上线多少钱工作汇报总结怎么写
  • 中国铁建华南建设有限公司网站核桃编程加盟费多少钱
  • 一般做网站的在哪里找wordpress分类页面的地址
  • 北京网站制作服务wordpress dota主题
  • 网站显示建设中外国网站建站
  • 建设工程东莞网站建设技术支持个人博客网站设计
  • 珠海营销营网站建设清远住房和城乡建设局网站
  • discuz 做论坛与网站网站运营经验分享ppt
  • 交互网站模板模版网站开发
  • 高端网站制作网页游戏交易网站
  • 沈阳建网站企业利用wordpress打包成百度小程序
  • 专业建站提供商wordpress默认主体设置
  • 网站开发设计开题报告谷歌推广外贸建站
  • 公司内部网站建设的意义android系统下载