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

企业网站运营推广难做吗青岛网站制作多少钱一个

企业网站运营推广难做吗,青岛网站制作多少钱一个,瑞安做网站的公司,门户网站开发解决方案choice参数 1.引入 以一张信息表为例 性别 学历 工作经验 是否婚配 是否生子 客户来源 ... 针对某个可以列举完全的可能性字段#xff0c;我们应该如何存储 只要某个字段的可能性时列举完全的#xff0c;那么一般情况下都会采用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_length32)age models.IntegerField()# 性别gender_choices ((1, male),(2, female),(3, other),)score ((1, male),(2, female),(3, other),)# 保证字段类型跟列举出来的元祖第一个数据类型一致即可gender models.IntegerField(choicesgender_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(usernamedream, age18, gender1)models.User.objects.create(usernamemengmeng, age28, gender2)models.User.objects.create(usernamechimeng, age39, gender3)# 存的时候没有列举出来的数字也能被存进去models.User.objects.create(usernamehope, age44, gender4)没有报错且第四条已经插入到数据库中 gender字段存的数字在上述元组列举的范围内并获取 # 取 - 如果有对应关系 user_obj models.User.objects.filter(pk1).first() print(user_obj.gender) # 1 # 只要是 choice字段的注释如果想要获取到注释的信息固定写法 get_字段名_display() print(user_obj.get_gender_display()) # malegender字段存的数字不在上述元组列举的范围内 # 取 - 如果没有对应关系 user_obj models.User.objects.filter(pk4).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_length32)# 全自动authors models.ManyToManyField(toAuthor)class Author(models.Model):name models.CharField(max_length32)优点代码不需要自己写非常方便还支持ORM提供操作第三张表的方法 缺点第三张表的扩展性极差(没办法添加额外字段 纯手动 class Book(models.Model):name models.CharField(max_length32)class Author(models.Model):name models.CharField(max_length32)class BookAuthor(models.Model):book_id models.ForeignKey(toBook)author_id models.ForeignKey(toAuthor)优点第三张表完全取决于自己进行额外的拓展 缺点需要写代码较多不能使用ORM提供的相关方法 半自动  class Book(models.Model):name models.CharField(max_length32)# 全自动# through_fields : 当前表是谁第一个参数就是谁# 判断的本质通过第三张表查询对应的表需要用到哪个字段就把哪个字段放在前面authors models.ManyToManyField(toAuthor, throughBookAuthor, through_fields(book, author))class Author(models.Model):name models.CharField(max_length32)class BookAuthor(models.Model):book_id models.ForeignKey(toBook)author_id models.ForeignKey(toAuthor)这样虽然可以使用ORM的正反向查询但是没法使用addsetremoveclean这四个方法 Ajax 什么是Ajax AJAXAsynchronous 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前端 bodyinput typetext idd1 input typetext idd2 input typetext idd3 pbutton idbtn点我/button /pscript// 先给按钮绑定点击事件$(#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.dnsts.com.cn/news/43072.html

相关文章:

  • 宁波网站设计公司安徽专业网站建设
  • 做网站图片网站上线 串词
  • 郑州网站建设华为官方手表网站
  • 改进网站建设wordpress后台设置
  • 制作网站赚钱吗开网站建设公司怎么样
  • 广州网站建设中心专业提供深圳网站设计公司
  • 网站优化公司免费咨询涿州网站建设有限公司
  • 自己怎么做返利网站吗检察网站建设
  • 流程网站免费文档模板下载
  • 白城网站建设哪家好企业运营管理师证书
  • wordpress米表插件搜索引擎优化什么意思
  • 如何做可以微信转发的网站服装销售网站设计与制作
  • 源码下载站wordpress调用分类链接
  • 淄博网站建设hidddwordpress分类目录在
  • 公司企业做网站好做吗wordpress自定义管理员头像
  • 网上买东西外贸网站建设推广优化
  • 陕西省建设信息管理网站wordpress获取分类名
  • 山东做网站公司哪家好湛江关键词优化报价
  • 学校网站建设的背景网站域名空间续费合同
  • 网站上的文章做参考文献英文网站怎么做推广
  • wap网站生成企业年金一般交多少钱
  • 手车做网课网站什么是网络营销中的kpi
  • 如何形容网站石景山富阳网站建设
  • 上海市建设工程合同备案网站国外常用的seo站长工具
  • 网站开发发送短信网站建设体会心得
  • 做零食用哪个网站好网络推广方案的工作安排
  • 做旅行的网站wordpress快速发布工具
  • 有商家免费建商城的网站吗织梦如何一个后台做两个网站
  • 如何做网站引流天津商城网站制作
  • app介绍网站模板免费下载网站报价内容