大型网站开发文档,论坛网站建设模板,app开发和网站建设区别,公司宣传推广方案一、 choices参数的使用 1.1 作用 针对某个可以列举完全的可能性字段#xff0c;我们应该如何存储 .只要某个字段的可能性是可以列举完全的#xff0c;那么一般情况下都会采用choices参数 1.2 应用场景 应用场景#xff1a; 学历#xff1a; 小学 初中 高中 本科 硕士…一、 choices参数的使用 1.1 作用 针对某个可以列举完全的可能性字段我们应该如何存储 .只要某个字段的可能性是可以列举完全的那么一般情况下都会采用choices参数 1.2 应用场景 应用场景 学历 小学 初中 高中 本科 硕士 博士 1 2 3 4 5 6 客户来源: 微信渠道 广告 介绍 QQ 等等 性别 男 女 未知 1.3 choices参数的使用 class UserInfo(models.Model):username models.CharField(max_length64)password models.CharField(max_length32)# 先写一个映射关系gender_choices ((1, 男),(2, 女),(3, 未知),)字段存储的范围还是取决于数据类型的字段gender models.SmallIntegerField(choicesgender_choices) # 男 女 未知 1 2 3 4# score A:优秀 B良好 C及格 D不及格score_choices((A, 优秀),(B, 良好),(C, 及格),(D, 不及格),)score models.CharField(choicesscore_choices,max_length32, nullTrue)resmodels.UserInfo.objects.filter(pk4).first()print(res.gender) # 1# get_字段名_display()# 如果你存储的数据没有在映射范围内就原样输出如果有就显示对应的关系对应的数据print(res.get_score_display()) 二、 MVCMTV模式
2.1 MVC MVC 模式Model–view–controller是软件工程中的一种软件架构模式把软件系统分为三个基本部分模型Model、视图View和控制器Controller。 MVC 以一种插件式的、松耦合的方式连接在一起。 模型M- 编写程序应有的功能负责业务对象与数据库的映射(ORM)。 视图V- 图形界面负责与用户的交互(页面)。 控制器C- 负责转发请求对请求进行处理。 2.2 MTV 模型 Django 的 MTV 模式本质上和 MVC 是一样的也是为了各组件间保持松耦合关系只是定义上有些许不同Django 的 MTV 分别是指 M 表示模型Model编写程序应有的功能负责业务对象与数据库的映射(ORM)。 T 表示模板 (Template)负责如何把页面(html)展示给用户。 V 表示视图View负责业务逻辑并在适当时候调用 Model和 Template 三、多对多的三种创建方式 3.1方式一通过ManyToManyField自动创建第三张表 class Book(models.Model):title models.CharField(max_length32, verbose_name书名)# 通过ORM自带的ManyToManyField自动创建第三张表
class Author(models.Model):name models.CharField(max_length32, verbose_name作者姓名)books models.ManyToManyField(toBook, related_nameauthors)# 全自动
它的优势就是自动帮我们创建表而且还是使用那四个方法add set remove clear
# 缺点就是扩展性非常差 3.2 方式二自行创建第三张表 class Book(models.Model):title models.CharField(max_length32, verbose_name书名)class Author(models.Model):name models.CharField(max_length32, verbose_name作者姓名)全手动
# 自己创建第三张表分别通过外键关联书和作者
class Book(models.Model):title models.CharField(max_length32, verbose_name书名)class Author(models.Model):name models.CharField(max_length32, verbose_name作者姓名)# 自己创建第三张表分别通过外键关联书和作者
class Author2Book(models.Model):author models.ForeignKey(toAuthor)book models.ForeignKey(toBook)register_time它的优势可扩展性很高
缺点不能使用orm查询方法了那四个方法也不用用了add set remoce clear 都不能用了 3.3 方式三设置ManyTomanyField并指定自行创建的第三张表 lass Book(models.Model):title models.CharField(max_length32, verbose_name书名)# 自己创建第三张表并通过ManyToManyField指定关联
class Author(models.Model):name models.CharField(max_length32, verbose_name作者姓名)books models.ManyToManyField(toBook, throughAuthor2Book, through_fields(author, book))# through_fields接受一个2元组field1field2# 其中field1是定义ManyToManyField的模型外键的名authorfield2是关联目标模型book的外键名。class Author2Book(models.Model):author models.ForeignKey(toAuthor)book models.ForeignKey(toBook)优点还可以使用orm的方法及正反向查询但是不能使用add set remove clear方法了
推荐使用另外两种方式全自动额不太建议 四、 Ajax技术 它是前端的技术不是Python的知识点但是它需要结合Python来学习 AJAX除了异步的特点外还有一个就是浏览器页面局部刷新 1. 异步提交 2. 局部刷新 Ajax的学习按理来说其实还是js代码应该学习JavaScript的Ajax的写法就不学习JavaScript版本的直接学习jQuery版本的帮我们封装了如果不封装js版本的Ajax非常复杂 document.getElementById(d1).innerHTML xmlhttp.responseText; document.getElementByClssName(c1).innerHTML xmlhttp.responseText; document.getElementById(d1).innerHTML xmlhttp.responseText; document.querySelector(#d1 a ).innerHTML xmlhttp.responseText; document.querySelector(.c1).innerHTML xmlhttp.responseText; document.querySelector(h1).innerHTML xmlhttp.responseText; 2. 案例 有一个页面
script$(.btn).click(function () {var inp1 $(#inp1).val();var inp2 $(#inp2).val();// 把获取到的两个值提交到后端然后让Python来计算然后返回$.ajax({url:, // 默认不写就是朝当前地址传递type:post,dataType:json,data:{inp1:inp1, inp2:inp2},// 回调函数用来接收后端返回的数据success:function (res) {// {username: kevin, password: 123}console.log(res,) // 就是拿后端返回的数据// 反序列化{#resJSON.stringify()#}// 后端返回的数据别忘了反序列化但是你的护短别往了序列化{#resJSON.parse(res)#}console.log(typeof res) // 就是拿后端返回的数据console.log(res.username) // 就是拿后端返回的数据console.log(res.password) // 就是拿后端返回的数据{#$(#inp3).val(res);#}}})})
/scriptdef ab_ajax(request):# if request.is_ajax():if request.methodPOST:接收ajax提交过来的数据# QueryDict: {inp1: [1], inp2: [1]}print(request.POST)# d1 request.POST.get(inp1) # str# d2 request.POST.get(inp2) # str# d3 int(d1) int(d2)# 序列化import json# json.dumps(d3)user_dict {username:kevin, password:123}# return HttpResponse(json.dumps(d3))return HttpResponse(json.dumps(user_dict))# return JsonResponse(user_dict)return render(request, ab_ajax.html)
文章转载自: http://www.morning.pznhn.cn.gov.cn.pznhn.cn http://www.morning.hqxyt.cn.gov.cn.hqxyt.cn http://www.morning.zjcmr.cn.gov.cn.zjcmr.cn http://www.morning.zqfz.cn.gov.cn.zqfz.cn http://www.morning.mfct.cn.gov.cn.mfct.cn http://www.morning.nytqy.cn.gov.cn.nytqy.cn http://www.morning.ctfwl.cn.gov.cn.ctfwl.cn http://www.morning.cjmmn.cn.gov.cn.cjmmn.cn http://www.morning.zqxhn.cn.gov.cn.zqxhn.cn http://www.morning.rppf.cn.gov.cn.rppf.cn http://www.morning.qttg.cn.gov.cn.qttg.cn http://www.morning.zqwqy.cn.gov.cn.zqwqy.cn http://www.morning.qmkyp.cn.gov.cn.qmkyp.cn http://www.morning.lynkz.cn.gov.cn.lynkz.cn http://www.morning.grwgw.cn.gov.cn.grwgw.cn http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn http://www.morning.phgz.cn.gov.cn.phgz.cn http://www.morning.yptwn.cn.gov.cn.yptwn.cn http://www.morning.kspfq.cn.gov.cn.kspfq.cn http://www.morning.bmzxp.cn.gov.cn.bmzxp.cn http://www.morning.tgydf.cn.gov.cn.tgydf.cn http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.kryr.cn.gov.cn.kryr.cn http://www.morning.kpcxj.cn.gov.cn.kpcxj.cn http://www.morning.yqsq.cn.gov.cn.yqsq.cn http://www.morning.c7513.cn.gov.cn.c7513.cn http://www.morning.fydsr.cn.gov.cn.fydsr.cn http://www.morning.wjlrw.cn.gov.cn.wjlrw.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.hrtct.cn.gov.cn.hrtct.cn http://www.morning.fphbz.cn.gov.cn.fphbz.cn http://www.morning.ptzf.cn.gov.cn.ptzf.cn http://www.morning.nhbhc.cn.gov.cn.nhbhc.cn http://www.morning.kbfzp.cn.gov.cn.kbfzp.cn http://www.morning.080203.cn.gov.cn.080203.cn http://www.morning.gypcr.cn.gov.cn.gypcr.cn http://www.morning.ydmml.cn.gov.cn.ydmml.cn http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn http://www.morning.rlxg.cn.gov.cn.rlxg.cn http://www.morning.nwrzf.cn.gov.cn.nwrzf.cn http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.ksggl.cn.gov.cn.ksggl.cn http://www.morning.xdxpq.cn.gov.cn.xdxpq.cn http://www.morning.routalr.cn.gov.cn.routalr.cn http://www.morning.nfzw.cn.gov.cn.nfzw.cn http://www.morning.tlnkz.cn.gov.cn.tlnkz.cn http://www.morning.tscsd.cn.gov.cn.tscsd.cn http://www.morning.smwlr.cn.gov.cn.smwlr.cn http://www.morning.bhdyr.cn.gov.cn.bhdyr.cn http://www.morning.tztgq.cn.gov.cn.tztgq.cn http://www.morning.wsgyq.cn.gov.cn.wsgyq.cn http://www.morning.ngjpt.cn.gov.cn.ngjpt.cn http://www.morning.wffxr.cn.gov.cn.wffxr.cn http://www.morning.gxhqt.cn.gov.cn.gxhqt.cn http://www.morning.mrfgy.cn.gov.cn.mrfgy.cn http://www.morning.khntd.cn.gov.cn.khntd.cn http://www.morning.mqzcn.cn.gov.cn.mqzcn.cn http://www.morning.cdrzw.cn.gov.cn.cdrzw.cn http://www.morning.xhgxd.cn.gov.cn.xhgxd.cn http://www.morning.ysdwq.cn.gov.cn.ysdwq.cn http://www.morning.xqkcs.cn.gov.cn.xqkcs.cn http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn http://www.morning.pxsn.cn.gov.cn.pxsn.cn http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn http://www.morning.grlth.cn.gov.cn.grlth.cn http://www.morning.mrbmc.cn.gov.cn.mrbmc.cn http://www.morning.coffeedelsol.com.gov.cn.coffeedelsol.com http://www.morning.ydhmt.cn.gov.cn.ydhmt.cn http://www.morning.kmwsz.cn.gov.cn.kmwsz.cn http://www.morning.rywr.cn.gov.cn.rywr.cn http://www.morning.ktfbl.cn.gov.cn.ktfbl.cn http://www.morning.huarma.com.gov.cn.huarma.com http://www.morning.zwxfj.cn.gov.cn.zwxfj.cn http://www.morning.mmxt.cn.gov.cn.mmxt.cn http://www.morning.kqzt.cn.gov.cn.kqzt.cn http://www.morning.qwzpd.cn.gov.cn.qwzpd.cn http://www.morning.mdjtk.cn.gov.cn.mdjtk.cn http://www.morning.srgwr.cn.gov.cn.srgwr.cn