django前后端交互

  • 创建一个apps
  • 在当前项目文件下,启动dos窗口。执行python manage.py startapp investigate
  • pycharm->tools->Run mange.py Task...出现类似于命令行窗口,执行startapp investigate
  • 配置apps

在settings.py 的 INSTALL_APP配置中指定,在该列表中添加你刚刚新建的app名称。

静态资源导入

  • 资源
  • template目录中创建html
  • 创建static目录,并在该目录中创建css、images、JavaScript目录
  • django提供【django.contrib.staticfiles】来管理静态文件
  • 资源配置

settings配置:STATIC_URL/STATICFILES_DIRS

STATIC_URL = ‘/static/‘
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,‘STATIC‘)
]

Django的路由功能

  • 路由是根据不同的url地址展示不同的内容或页面,一般在【urls.py】中配置访问的URL
EG:
urlpatterns = [
    url(r‘^admin‘,admin.site.urls),
    url(r‘^form/$‘,inverstigate)#inverstigate为你的路由路径
]
# 具体url配置也可参考urls.py中的注释内容
  • Django中的urls和views的关系
  • urls中配置的url调用views中的方法
  • render函数将想要交给前端的数据,交给模板

创建Model

  • 根据业务需求创建名为【UserInfo】的Model
  • 【UserInfo】是【investigate】中的一个Model,Model与app为多对一的关系
  • 为【UserInfo】创建字段【Field】。
  • 常用的字段类型清单
名称 说明
AutoField 一个自动递增的整型字段,添加记录时它会自动增长。你通常不需要直接使用这个字段;如果你不指定主键的话,系统会自动添加一个主键字段到你的model。(参阅自动主键字段)
BooleanField 布尔字段,管理工具里会自动将其描述为checkbox
CharField 字符串字段,单行输入,用于较短的字符串,如要保存大量文本, 使用 TextField;CharField有一个必填参数:CharField.max_length:字符的最大长度,django会根据这个参数在数据库层和校验层限制该字段所允许的最大字符数。
TextField 一个容量很大的文本字段, admin 管理界面用 <textarea>多行编辑框表示该字段数据。
CommaSeparatedIntegerField 用于存放逗号分隔的整数值。类似 CharField,必须maxlength 参数。
DateField 日期字段
DateTimeField 类似 DateField 支持同样的附加选项。
EmailField 一个带有检查 Email 合法性的 CharField,不接受 maxlength 参数。
FileField 一个文件上传字段。 要求一个必须有的参数: upload_to, 一个用于保存上载文件的本地文件系统路径。
FilePathField 选择指定目录按限制规则选择文件,有三个参数可选, 其中”path”必需的,这三个参数可以同时使用
FloatField 浮点型字段。 必须提供两个 参数, 参数描述:max_digits:总位数(不包括小数点和符号) decimal_places:小数位数。如:要保存最大值为 999 (小数点后保存2位),你要这样定义字段:models.FloatField(…,max_digits=5, decimal_places=2),要保存最大值一百万(小数点后保存10位)的话,你要这样定义:models.FloatField(…,max_digits=19, decimal_places=10)
ImageField 类似 FileField, 不过要校验上传对象是否是一个合法图片。它有两个可选参数:height_field 和 width_field,如果提供这两个参数,则图片将按提供的高度和宽度规格保存。 该字段要求 Python Imaging 库。
IntegerField 用于保存一个整数。
IPAddressField 一个字符串形式的 IP 地址, (如 “202.1241.30″)。
NullBooleanField 类似 BooleanField, 不过允许 NULL 作为其中一个选项。 推荐使用这个字段而不要用 BooleanField 加 null=True 选项。 admin 用一个选择框 <select> (三个可选择的值: “Unknown”, “Yes” 和 “No” ) 来表示这种字段数据。
PhoneNumberField 一个带有合法美国风格电话号码校验的 CharField(格式:XXX-XXX-XXXX)。
PositiveIntegerField 类似 IntegerField, 但取值范围为非负整数(这个字段应该是允许0值的…可以理解为无符号整数)
PositiveSmallIntegerField 正小整型字段,类似 PositiveIntegerField, 取值范围较小
SlugField 是一个报纸术语. slug 是某个东西的小小标记(短签), 只包含字母,数字,下划线和连字符.它们通常用于URLs。
SmallIntegerField 类似 IntegerField, 不过只允许某个取值范围内的整数。(依赖数据库)
TimeField 时间字段,类似于 DateField 和 DateTimeField。
URLField 用于保存 URL。 若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在(即URL是否被有效装入且没有返回404响应)。
USStateField 美国州名缩写,由两个字母组成。
XMLField XML字符字段,校验值是否为合法XML的 TextField,必须提供参数:schema_path:校验文本的 RelaxNG schema 的文件系统路径。
  • Field选项说明
选项 说明
null 缺省设置为false.通常不将其用于字符型字段上,比如CharField,TextField上.字符型字段如果没有值会返回空字符串。
blank 该字段是否可以为空。如果为假,则必须有值
choices 一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择。如SEX_CHOICES= ((‘F’,‘Female’),(‘M’,‘Male’),)
core db_column,db_index 如果为真将为此字段创建索引
default 设定缺省值
editable 如果为假,admin模式下将不能改写。缺省为真
help_text admin模式下帮助文档
primary_key 设置主键,如果没有设置django创建表时会自动加上ID作为主键
radio_admin 用于admin模式下将select转换为radio显示。只用于ForeignKey或者设置了choices
unique 数据唯一
unique_for_date 日期唯一,如下例中系统将不允许title和pub_date两个都相同的数据重复出现 title = meta.CharField(maxlength=30,unique_for_date=’pub_date’)
unique_for_month / unique_for_year 用法同上
validator_list 有效性检查。非有效产生 django.core.validators.ValidationError 错误

初始化Model

  • settings配置:DATABASES中键入你的数据库信息(假如使用sqlite则保持原有配置即可)
EG:
DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘, #驱动名称
        ‘NAME‘: ‘‘,#数据库名称
        ‘USER‘: ‘‘, #数据库用户名
        ‘PASSWORD‘: ‘‘, #用户名密码
        ‘HOST‘: ‘‘, #主机地址
        ‘PORT‘: ‘‘, #端口号
    }
}
  • 在命令行(若有疑问请查看上文关于app的创建)执行makemigrations、migrate 初始化Django框架中隐含的表文件
  • 同上执行makemigrations、migrate investigate,初始化你刚刚创建的Model。

创建views

  • 创建showform函数,
def showform(request):
    if request.method == "POST":
        res_data = request.POST # 获取for表单提交数据
        ret = data_mod(res_data)
        models.UserInfo.objects.create(**ret)
    return render(request,‘form.html‘)
  • 创建data_mod函数
def data_mod(rets):
    ret_data={}
    for k_ret,v_ret in rets.items():
        if k_ret != ‘csrfmiddlewaretoken‘:
            mid = {k_ret:v_ret}
            ret_data.update(mid)
    return ret_data
  • run mysite
  • 打开浏览器输入127.0.0.1:8000/form/查看效果
  • 在web中输入你的个人信息,点击提交字段不能为空,若想填写为空值,可以参考Field选项,在Model创建时设定default值
  • 查看数据是否存储成功数据可视化工具可随意,推荐Navicat for MySQL

效果展示

web

database

问题思考

  • 前端数据与后台交互时,采用什么方式更加安全合理?
  • 在form表单提交前设置,若填写信息为空则提示用户
  • form表单提交数据用request.POST修改会报异常(This QueryDict instance is immutable)

作者:羽恒
链接:https://www.jianshu.com/p/7917dd6c3b95
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/shiqu/p/10376551.html

时间: 2024-11-25 10:17:18

django前后端交互的相关文章

vue和django前后端交互前戏

前端配置插件 全局静态文件配置 css文件,js文件 css样式文件 加载 // 配置全局css样式 // import '@/assets/css/global.css' require('@/assets/css/global.css'); settings.js文件** $按时成员 prototype就是给类属性添加属性 // 配置全局settings.js import settings from '@/assets/js/settings' Vue.prototype.$setting

写给刚入门的前端工程师的前后端交互指南

转自原文 写给刚入门的前端工程师的前后端交互指南 作为刚接触前端的不久的童鞋,大家都会兴奋于CSS和JS所带来漂亮界面,然而,前端工程师除了UI重构外,还有非常重要的职责在正确的区域渲染出服务端的数据.毕竟,我们要构建一个大的web应用,必然不是普普通通的静态页面构成. 下文将罗列将来前端工程师应该必备的同后端打交道的常用技能. 服务端渲染 谈起服务端渲染,对于动态服务而言,这个世界上跑的大多数页面都经历过服务端的数据渲染,接口->前端赋值->模版渲染 .这一切都在服务器完成,我们查看源码时候

网页前后端交互示例

对于网页开发而言,网页与服务器之间的数据交互是很频繁的,至关重要的一件事情.但是对于很多的初学者来说,这就成了一个不可逾越的难点问题,本篇博客将从一个初学者的关点讲解其中一种交互方式,此方法经过本人验证有效,并附有代码. 首先要实现网页前后台程序的交互需要安装后台框架,本人安装的框架为wamp(windows+apache+mysql+php).安装程序可以通过我在百度网盘上的分享链接下载http://pan.baidu.com/s/1cIKb8a 提取码是cnfh.至于安装过程中的配置可以参考

浅谈前后端交互

首先,关于接口文档--由后台设计修改(前端是接口文档的使用者) 其次,前后端交互的数据,格式是:json,(xml不多了) 重要的是,前后端如何交互??--接口地址+前端请求的参数+后台返回的参数 1.接口地址: 2.前端请求的参数: 形式:get/post(get从指定服务器提取数据,post将数据提交给指定服务器): 所有前端url后面的参数都是辅助后台数据查询的:若不需要参数,则后台会直接将url给前端: 注:为什么需要在请求的时候传入参数??--后台在查询数据库的时候需要按条件查询. 3

初识 vue —— 最简单的前后端交互示例

一.初识 vue 时的困惑 最近想学一门前端技术防身,看到博客园中写 vue 的多,那就 vue 吧.都说 vue 的官方教程写得好,所以我就从官方教程开始学习.官方教程说"Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用."但是这个概念是个什么鬼?还是让人一头雾水嘛.而且我一开始也没有搞清楚 vue 的定位,只知道它是一个前端库,但是确实不知道它的优势是什么,还以为它是一个学会就能一劳永

SSM-网站后台管理系统制作(4)---Ajax前后端交互

前提:Ajax本身就为前后端交互服务的,实现功能:用户输入信息,实时判断用户的情况,这也是现在登录界面普遍流行的做法.前端js通过注释识别Controller层,该层查询返回,和之前Google验证码有点像. 学习教程:http://how2j.cn/ 菜鸟教程 上面都有讲解, 前端Ajax代码 1 </script> 2 3 <script language="javascript" type="text/javascript"> 4 $(

百度ueditor的图片上传,前后端交互使用

百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor.config.js即可.这里就不多说. 至于图片上传,ueditor 设计的时候是考虑和后端交互的,所以会看到可以下载什么php,java版本,还有很多网上会说道有什么后端配置文件,改那改这的,但是实际上后端存储业务是按照公司实际来的,实践起来并不顺利. 本文重点讲述的只用前端文件和ueditor.

Vue-CLI项目-axios模块前后端交互(类似ajax提交)

08.31自我总结 Vue-CLI项目-axios前后端交互 一.模块的安装 npm install axios --save #--save可以不用写 二.配置main.js import axios from 'axios' Vue.prototype.$axios = axios; 三.使用 created() { // 组件创建成功的钩子函数 // 拿到要访问课程详情的课程id let id = this.$route.params.pk || this.$route.query.pk

前后端交互模型(一个面试题引发的思考总结)

客户端和服务端的交互 面试题: 当用户在地址栏中输入网址,到最后看到页面,中间都经历了什么? (引出前后端交互模型的内容) 客户端 =======> 服务端 (request请求阶段) 服务端 <======= 客户端 (responese响应阶段) 1.URL地址解析 2.DNS域名解析(DNS服务器) 3.和服务器建立TCP连接 (三次握手) 4.把客户端信息传递给服务器(发送HTTP请求) 5.服务器得到并处理请求(HTTP响应内容) 6.客户端渲染服务器返回的内容 7.和服务器端断开T