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

凡科网站制作平台广告招商

凡科网站制作平台,广告招商,怎么编写一个网站,搜索引擎优化的要点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://www.tj-hxxt.cn/news/50325.html

相关文章:

  • css不规则网站导航怎么做东莞seo优化方案
  • 重庆梁平网站建设哪家便宜自己搭建网站需要什么
  • 太原网站推广怎么做中国站长工具
  • 原墨网站建设做优化关键词
  • 日本做的视频网站有哪些问题设计模板网站
  • 大连高新园区招聘北京seo
  • 网站的黄金看盘软件广州疫情已经达峰
  • 深圳餐饮网站设计国内搜索引擎排名第一的是
  • 智能网站建设找三好科技seo是什么平台
  • 非常酷的wordpress主题杭州网站优化
  • 怎样找到正规代加工网站竞价托管哪家公司好
  • 网站建设教学方法探究网络营销的主要工作有哪些
  • 做芯片外贸生意上哪个网站seo网站地图
  • 南皮网站建设价格免费推广的app有哪些
  • 企业微网站开发杭州网站
  • 南阳商城站海外推广运营
  • 新闻网站建设方案书怎么写seo和sem是什么意思
  • 北京网站推广宁波seo推广推荐公司
  • wordpress源码讲解湖北seo整站优化
  • 动态网站开发 pdf优化seo厂家
  • 打开b站广告软文代理平台
  • 邯郸成安建设局网站搜索引擎优化排名seo
  • 天津网站开发建设公司百度人工申诉客服电话
  • 妹妹强迫我和她做网站加拿大搜索引擎
  • 湛江有哪些网站建设公司网络工程师培训班要多少钱
  • wordpress屏蔽垃圾系统优化工具
  • 企业网站开发流程简述百度推广后台登录首页
  • 公司网站模板免费源码下载自动seo系统
  • 企业建站网站认证宁波网络营销公司有哪些
  • 做跨境的网站有哪些内容seo快速排名工具