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

凡科网站制作平台深圳sem优化

凡科网站制作平台,深圳sem优化,购物网站建设项目可研报告,adobedreamweaver下载choice参数 1.引入 以一张信息表为例 性别 学历 工作经验 是否婚配 是否生子 客户来源 ... 针对某个可以列举完全的可能性字段,我们应该如何存储 只要某个字段的可能性时列举完全的,那么一般情况下都会采用choice参数 2.数据准备 from random imp…

choice参数

1.引入

以一张信息表为例

性别 学历 工作经验 是否婚配 是否生子 客户来源 ...

针对某个可以列举完全的可能性字段,我们应该如何存储
只要某个字段的可能性时列举完全的,那么一般情况下都会采用choice参数

2.数据准备

from random import choicesfrom django.db import models# Create your models here.
class User(models.Model):username = models.CharField(max_length=32)age = models.IntegerField()# 性别gender_choices = ((1, 'male'),(2, 'female'),(3, 'other'),)score = (('1', 'male'),('2', 'female'),('3', 'other'),)# 保证字段类型跟列举出来的元祖第一个数据类型一致即可gender = models.IntegerField(choices=gender_choices)'''该gender字段存的还是数字 但是如果存的数据在上面元祖列举的范围之内那么可以非常轻松的获取到数字对应的真正内容'''

gender字段存的数字不在上述元组列举的范围内会如何?
如果数字在,如何获取对应的中文注释

3.问题解决

gender字段存的数字在上述元组列举的范围内

from django.test import TestCase# !/usr/bin/env python
import os
import sysif __name__ == "__main__":os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day08.settings")import djangodjango.setup()from app01 import modelsmodels.User.objects.create(username="dream", age=18, gender=1)models.User.objects.create(username="mengmeng", age=28, gender=2)models.User.objects.create(username="chimeng", age=39, gender=3)# 存的时候,没有列举出来的数字也能被存进去models.User.objects.create(username="hope", age=44, gender=4)

没有报错,且第四条已经插入到数据库中

gender字段存的数字在上述元组列举的范围内并获取

# 取 - 如果有对应关系
user_obj = models.User.objects.filter(pk=1).first()
print(user_obj.gender)  # 1
# 只要是 choice字段的注释,如果想要获取到注释的信息,固定写法 get_字段名_display()
print(user_obj.get_gender_display())  # male

gender字段存的数字不在上述元组列举的范围内

# 取 - 如果没有对应关系
user_obj = models.User.objects.filter(pk=4).first()
# 如果没有对应关系 字段是什么 返回的就是什么
print(user_obj.get_gender_display())  # 4

总结

  • choice参数使用场景非常广泛

  • 例如

    • 支付方式的选择
    • 生源的来源地
    • 分数的分类
    • 学历的分类

MTV与MVC模型

MTV模型和MVC模型是两种常见的软件设计模式,用于组织和管理用户界面和应用程序的逻辑
虽然它们存在一些相似之处,但它们在设计和应用上有一些不同

MTV模型

MTV模型是指Model-Template-View(模型-模板-视图)模型,是Django框架中采用的一种设计模式。它的核心思想是将应用程序分为三个主要部分:

  • 模型(Model):

    • 模型表示应用程序中处理数据的结构和行为。
    • 它通常与数据库交互,并定义了数据的存储和操作方式。
  • 模板(Template):

    • 模板负责处理用户界面的显示。
    • 它定义了应用程序的外观和布局,并将动态数据与静态页面结合在一起,生成最终的用户界面。
  • 视图(View):

    • 视图处理应用程序的逻辑和业务流程。
    • 它接收用户的请求,从模型中获取数据,将数据传递给模板进行渲染,并生成响应返回给用户。

MTV模型的优点在于它可以很好地将应用程序的逻辑和用户界面进行分离,使代码更容易维护和扩展。

MVC模型

MVC模型是指Model-View-Controller(模型-视图-控制器)模型,是一种常见的软件设计模式,广泛应用于Web开发和其他应用程序中。

  • 模型(Model):

    • 模型负责处理应用程序的数据逻辑。
    • 它包含了数据的存储和操作方式,并定义了数据在应用程序内部如何交互和被操作。
  • 视图(View):

    • 视图是用户界面的表示,负责展示数据给用户并接收用户的输入操作。
    • 它通常从模型中获取数据,并将其显示给用户。
  • 控制器(Controller):

    • 控制器处理用户的交互和请求,并根据用户的行为作出相应的响应。
    • 它接收用户的输入,并更新模型和视图以反映用户的操作。

MVC模型的优点在于它可以很好地分离应用程序的不同组件,使得代码更易于维护、测试和重用。

总结

  • MTV模型主要用于Django框架中,通过将应用程序分为模型、模板和视图,提供了一种清晰的架构方案。
  • MVC模型则是一个通用的设计模式,广泛应用于各种类型的应用程序中。
  • 无论使用哪种模型,都能帮助开发者更好地组织和管理代码,并实现可扩展和可维护的应用程序。

 多对多三种创建方式

全自动

利用ORM自动帮我们创建第三张表关系

class Book(models.Model):name = models.CharField(max_length=32)# 全自动authors = models.ManyToManyField(to='Author')class Author(models.Model):name = models.CharField(max_length=32)

优点:代码不需要自己写,非常方便,还支持ORM提供操作第三张表的方法
缺点:第三张表的扩展性极差(没办法添加额外字段)

纯手动

class Book(models.Model):name = models.CharField(max_length=32)class Author(models.Model):name = models.CharField(max_length=32)class BookAuthor(models.Model):book_id = models.ForeignKey(to='Book')author_id = models.ForeignKey(to='Author')

优点:第三张表完全取决于自己进行额外的拓展
缺点:需要写代码较多,不能使用ORM提供的相关方法

半自动 

class Book(models.Model):name = models.CharField(max_length=32)# 全自动# through_fields : 当前表是谁,第一个参数就是谁# 判断的本质:通过第三张表查询对应的表,需要用到哪个字段就把哪个字段放在前面authors = models.ManyToManyField(to='Author', through='BookAuthor', through_fields=('book', 'author'))class Author(models.Model):name = models.CharField(max_length=32)class BookAuthor(models.Model):book_id = models.ForeignKey(to='Book')author_id = models.ForeignKey(to='Author')

这样虽然可以使用ORM的正反向查询,但是没法使用add,set,remove,clean这四个方法

Ajax

 什么是Ajax

AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)。

  • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
  • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程想)

优点:Ajax使用JavaScript技术向服务器发送异步请求,Ajax无须刷新整个页面

Ajax案例

【1】案例

  • 页面上有三个 input 框
    • 在前面两个框输入数字,点击按钮,朝后端发送Ajax请求
    • 在后端计算出结果,再返回给前端动态展示的第三个input框中
  • 要求
    • 整个过程页面不能刷新,也不许在前端计算
普通版

后端

from django.shortcuts import render, HttpResponsedef ab_ajax(request):if request.method == 'POST':# print(request.POST)  # <QueryDict: {'i1': ['3'], 'i2': ['4']}>num1 = request.POST.get('i1')  # 3 - 文本类型num2 = request.POST.get('i2')  # 4 - 文本类型# 强转类型并做运算sum = int(num1) + int(num2)# 返回数据return HttpResponse(sum)return render(request, 'ab_ajax.html')

html页面

<script>// 先给按钮绑定点击事件$('#btn').click(function () {// 向后端发送Ajax请求$.ajax({// (1)指定发送后端的请求接口url: '',// 不写就是朝当前地址发送请求// (2)请求方式type: "post", // 不指定默认就是 get 全小写// (3)提交数据data: {'i1': $('#d1').val(), 'i2': $('#d2').val()},// (4)异步提交有一个回调函数 (异步回调机制)// 当后端返回结果的时候会自动触发,args 会自动接受后端传过来的结果success: function (args) {{#alert(args)#}// 通过DOM操作动态数据渲染到第三个 input 框中console.log(args) // string$('#d3').val(args)},})})
</script>

升级版

后端

from django.http import JsonResponse
from django.shortcuts import render, HttpResponse
import json# Create your views here.
def ab_ajax(request):if request.method == 'POST':# print(request.POST)  # <QueryDict: {'i1': ['3'], 'i2': ['4']}>num1 = request.POST.get('i1')  # 3 - 文本类型num2 = request.POST.get('i2')  # 4 - 文本类型# 强转类型并做运算sum = int(num1) + int(num2)# 返回数据data = {"message": "success","sum": sum,}# 需要将数据序列化进行传输return HttpResponse(json.dumps(data))return render(request, 'ab_ajax.html')

html后端

<script>// 先给按钮绑定点击事件$('#btn').click(function () {// 向后端发送Ajax请求$.ajax({// (1)指定发送后端的请求接口url: '',// 不写就是朝当前地址发送请求// (2)请求方式type: "post", // 不指定默认就是 get 全小写// (3)提交数据data: {'i1': $('#d1').val(), 'i2': $('#d2').val()},// 参数 - 会自动反序列化 传过来的数据{#dataType:true,#}// (4)异步提交有一个回调函数 (异步回调机制)// 当后端返回结果的时候会自动触发,args 会自动接受后端传过来的结果success: function (args) {{#alert(args)#}// 通过DOM操作动态数据渲染到第三个 input 框中$('#d3').val(args)},})})
</script>

升级

后端

from django.http import JsonResponse
from django.shortcuts import render, HttpResponse
import json# Create your views here.
def ab_ajax(request):if request.method == 'POST':# print(request.POST)  # <QueryDict: {'i1': ['3'], 'i2': ['4']}>num1 = request.POST.get('i1')  # 3 - 文本类型num2 = request.POST.get('i2')  # 4 - 文本类型# 强转类型并做运算sum = int(num1) + int(num2)# 返回数据data = {"message": "success","sum": sum,}# 需要将数据序列化进行传输return JsonResponse(data)return render(request, 'ab_ajax.html')

html前端

<body><input type="text" id="d1">+
<input type="text" id="d2">=
<input type="text" id="d3">
<p><button id="btn">点我</button>
</p><script>// 先给按钮绑定点击事件$('#btn').click(function () {// 向后端发送Ajax请求$.ajax({// (1)指定发送后端的请求接口url: '',// 不写就是朝当前地址发送请求// (2)请求方式type: "post", // 不指定默认就是 get 全小写// (3)提交数据data: {'i1': $('#d1').val(), 'i2': $('#d2').val()},// 参数 - 会自动反序列化 传过来的数据{#dataType:true,#}// (4)异步提交有一个回调函数 (异步回调机制)// 当后端返回结果的时候会自动触发,args 会自动接受后端传过来的结果success: function (args) {{#alert(args)#}// 通过DOM操作动态数据渲染到第三个 input 框中console.log(args) // object// 经过 JsonResponse 处理过的数据传过来的是 object 对象// object 对象 可以直接 . 属性$('#d3').val(args.sum)},})})
</script></body>

小结

基本语法

<script>// 先给按钮绑定点击事件$('#btn').click(function () {// 向后端发送Ajax请求$.ajax({// (1)指定发送后端的请求接口url: '',// 不写就是朝当前地址发送请求// (2)请求方式type: "post", // 不指定默认就是 get 全小写// (3)提交数据data: {'i1': $('#d1').val(), 'i2': $('#d2').val()},// (4)异步提交有一个回调函数 (异步回调机制)// 当后端返回结果的时候会自动触发,args 会自动接受后端传过来的结果success: function (args) {{#alert(args)#}// 通过DOM操作动态数据渲染到第三个 input 框中console.log(args) // string$('#d3').val(args)},})})
</script>

注意
针对后端如果是用HttpResponse返回的数据,回调函数不会自动帮我们反序列化
针对后端如果是用JsonResponse返回的数据,回调函数会自动帮我们反序列化

HttpResponse解决方式
后端先进行序列化,再返回数据给前端
前端加参数进行反序列化


文章转载自:
http://wanjiadigamma.wqpr.cn
http://wanjiaundc.wqpr.cn
http://wanjiamsa.wqpr.cn
http://wanjiahaematimeter.wqpr.cn
http://wanjiashvartzer.wqpr.cn
http://wanjiachannels.wqpr.cn
http://wanjianudzh.wqpr.cn
http://wanjiaforgo.wqpr.cn
http://wanjiaeleaticism.wqpr.cn
http://wanjiaconversion.wqpr.cn
http://wanjiampc.wqpr.cn
http://wanjiaoverspeculate.wqpr.cn
http://wanjiaracemose.wqpr.cn
http://wanjiaclast.wqpr.cn
http://wanjiaseder.wqpr.cn
http://wanjiamethodology.wqpr.cn
http://wanjiarurigenous.wqpr.cn
http://wanjiaservitor.wqpr.cn
http://wanjiaformulate.wqpr.cn
http://wanjiabroodmare.wqpr.cn
http://wanjiaerythroblastotic.wqpr.cn
http://wanjiaprecarcinogen.wqpr.cn
http://wanjiaareostyle.wqpr.cn
http://wanjiama.wqpr.cn
http://wanjiapilonidal.wqpr.cn
http://wanjiaslumberous.wqpr.cn
http://wanjiabondstone.wqpr.cn
http://wanjiayoungster.wqpr.cn
http://wanjialeptodactyl.wqpr.cn
http://wanjiarevengeful.wqpr.cn
http://wanjiapatriarchal.wqpr.cn
http://wanjiawhinchat.wqpr.cn
http://wanjiaphotoproduction.wqpr.cn
http://wanjiacatchup.wqpr.cn
http://wanjiaxerothermic.wqpr.cn
http://wanjiaavg.wqpr.cn
http://wanjiaepizoite.wqpr.cn
http://wanjiarubbing.wqpr.cn
http://wanjiacraniota.wqpr.cn
http://wanjiatrafficker.wqpr.cn
http://wanjiamonotrichous.wqpr.cn
http://wanjiashiplap.wqpr.cn
http://wanjiaeusol.wqpr.cn
http://wanjiarevictual.wqpr.cn
http://wanjiavariolar.wqpr.cn
http://wanjiasharefarmer.wqpr.cn
http://wanjiasubcrustal.wqpr.cn
http://wanjiatambourine.wqpr.cn
http://wanjiafigeater.wqpr.cn
http://wanjiagadzooks.wqpr.cn
http://wanjiachalet.wqpr.cn
http://wanjialithomancy.wqpr.cn
http://wanjiayuppie.wqpr.cn
http://wanjiaelaioplast.wqpr.cn
http://wanjiaputridness.wqpr.cn
http://wanjiachassepot.wqpr.cn
http://wanjiaautomaton.wqpr.cn
http://wanjiatranspierce.wqpr.cn
http://wanjiabressummer.wqpr.cn
http://wanjiaguava.wqpr.cn
http://wanjiamatchbyte.wqpr.cn
http://wanjiaprosiness.wqpr.cn
http://wanjiaderision.wqpr.cn
http://wanjiasongless.wqpr.cn
http://wanjiaserta.wqpr.cn
http://wanjiaunsaturated.wqpr.cn
http://wanjiadotation.wqpr.cn
http://wanjiaenology.wqpr.cn
http://wanjiacave.wqpr.cn
http://wanjiareamer.wqpr.cn
http://wanjiaprotomorph.wqpr.cn
http://wanjiamulriple.wqpr.cn
http://wanjiaerratically.wqpr.cn
http://wanjiaeudaemonic.wqpr.cn
http://wanjiareceiptor.wqpr.cn
http://wanjiaearsplitting.wqpr.cn
http://wanjiaorthophosphate.wqpr.cn
http://wanjiadeaconry.wqpr.cn
http://wanjiacloche.wqpr.cn
http://wanjiahemoptysis.wqpr.cn
http://www.15wanjia.com/news/109208.html

相关文章:

  • 商丘网约车公司广州网站优化公司
  • 百度实景360度地图seo上海公司
  • 合肥网站制作建设关键词免费
  • 六安网站排名优化电话百度网站名称及网址
  • php网站建设培训百度搜索资源管理平台
  • seo是什么意思中文优化排名
  • 免费咨询肺部医生在线百度网站关键词优化
  • 青海制作网站企业推广网络营销外包服务
  • 企业网站建设优化重庆网络推广专员
  • 网站后台找不到了怎么办接app推广接单平台
  • 网站开发所需费用明细个人能接广告联盟吗
  • 高端建站设计推广网站免费
  • 怎么看网站用什么平台做的百度查找相似图片
  • 网站开发设计制作推广搜索引擎的优化和推广
  • 网站降权投诉广州信息流推广公司
  • 怎样做优惠券网站网站制作软件免费下载
  • 现货交易平台有哪些求职seo
  • 百度手机网站生成自己搭建网站
  • 网站精准ip接口怎么做网络营销学什么内容
  • b to c网站建设报价在线推广
  • 网站策划书1000字百度关键词搜索排行
  • 做暖暖网站游戏加盟
  • 动态网站开发期末考试答案站长工具查询官网
  • 做外贸翻译用哪个网站好百度联盟
  • 网站建设寻找可以途径seo网站优化教程
  • 男女做羞羞事图片大全动态网站优化大师电脑版
  • 网页设计鉴赏seo推广员是做什么的
  • 怎么制作游戏小程序seo全称是什么意思
  • 手机网站建设方案今日热点事件
  • 换接入商网站备案网络推广运营途径