继:Django学习随记

【读取操作】

message/views.py文件

from django.shortcuts import renderfrom .models import UserMessage # 导入models的UserMessage类 其中.表示在同目录# Create your views here.def getform(request):all_message = UserMessage.objects.all()  # objects数据表管理器,all()返回所有数据库记录;返回QuerySet数据类型给变量for message in all_message:  # 返回的QuerySet数据类型是可循环的,可向操作类一样来操作数据库数据print message.name  # 比如我们要打印message_usermessage数据表中的name字段return render(request,'message_form.html')

数据库操作类型:

all()      =  返回所有记录

all_message = UserMessage.objects.all()

filter()  =  返回特定筛选记录

all_message = UserMessage.objects.filter(name='需要的值',address='北京') # 中文请记得头部 # _*_ coding:utf-8 _*_

【写入数据】:

message/views.py文件

from .models import UserMessage# Create your views here.def getform(request):user_message = UserMessage()  # 实例化user_message.name = "王二"user_message.message = "测试赛所所所"user_message.address = "上海"user_message.email = "2@2.com"user_message.object_id = "附近的空间放大看"user_message.save()  # 因为UserMessage类已经继承了models.Model,所以直接调用到了save()方法return render(request,'message_form.html')

运行完成后mysql数据库中就会新增了这些对应的记录

【表单提交和储存】

<form action="/form/" method="post" class="smart-green"> <!--action表示提交地址  method表示方法  class表示CSS类--><h1>留言信息<span>请留下你的信息.</span></h1><label><span>姓名 :</span><input id="name" type="text" name="name" class="error" placeholder="请输入您的姓名"/>  <!--input会将数据提交到后台对应的name中--><div class="error-msg"></div></label><label><span>邮箱 :</span><input id="email" type="email" value="" name="email" placeholder="请输入邮箱地址"/><div class="error-msg"></div></label><label><span>联系地址 :</span><input id="address" type="text" value="" name="address" placeholder="请输入联系地址"/><div class="error-msg"></div></label><label><span>留言 :</span><textarea id="message" name="message"  placeholder="请输入你的建议"></textarea><div class="error-msg"></div></label><div class="success-msg"></div><label><span> </span><input type="submit" class="button" value="提交"/></label>{% csrf_token %}   <!--这个标签是django的安全提交机制,所有提交的表单必须要加上这个标签,否则无法通过-->
</form>

相应的我们也要把views.py文件接收处理POST请求:

def getform(request):if request.method == "POST":  # 判断是否是POST请求方式,如果不判断可能接收到的是空值,如果GET方法时name = request.POST.get('name','')  # 接收name值,如果为空时用空值替换message = request.POST.get('message','')address = request.POST.get('address','')email = request.POST.get('email','')user_message = UserMessage()  # 实例化user_message.name = nameuser_message.message = messageuser_message.address = addressuser_message.email = emailuser_message.object_id = "附2222"  # 主键是唯一的,如果相同的主键时数据库的数据将只相当于替换user_message.save()  # 因为UserMessage类已经继承了models.Model,所以直接调用到了save()方法

【数据库记录的删除】 还是message的app应用中views.py文件

def getform(request):all_message = UserMessage.objects.filter(name='啪啪啪',address='广东省东莞市')all_message.delete()  # 这样是删除整条查询到符合条件的所有记录
def getform(request):all_message = UserMessage.objects.filter(name='啪啪啪',address='广东省东莞市')for message in all_message:message.delete()  # 这样是删除循环到的单条记录

【获取数据库记录并显示到页面中】message的app应用中views.py文件

def getform(request):message = Noneall_message = UserMessage.objects.filter(name='abcd')  # 数据库中我们已经有条记录的name值为if all_message:     # 判断是否查询到记录message = all_message[0]  #如同操作数组一样来操作数据,也可以用切片的方式return render(request,'message_form.html',{"my_message":message})# render方法可以在后面传递数组,并且取值时类似字典的方法取键

在html页面中也要加入接收值的标签

<input id="name" type="text" value="{{ my_message.name }}" name="name" class="error" placeholder="请输入您的姓名"/>

在input标签中加入value="{{ my_message.name }}"  如果符合我们的查询条件就可以显示出这个name值了

而textarea标签略有不同,调取值是写在<textarea ...>获取值</textarea> 当中的。

<textarea id="message" name="message"  placeholder="请输入你的建议">{{ my_message.message }}</textarea>

Django的模板中并不能写入python逻辑,因为担心在模板中写入过多的逻辑所以限制了,但是还有其他的用法

<input id="name" type="text" value="{% if my_message.name == 'abcd' %}efghijk{% endif %}" name="name" class="error" placeholder="请输入您的姓名"/>

value="{% if my_message.name == 'abcd' %}efghijk{% endif %}"

(判断语句,如果name值等于abcd时就显示efghijk,当然还要记得加入判断的结束标签)

同样的还可以使用else:

value="{% if my_message.name == 'abcd123' %}efghijk{% else %}EFGGG{% endif %}"

(如果第一个判断语句不成立则执行else从而得到的显示值为EFGGG)

再同样的还可以使用not:

value="{% if not my_message.name == 'abcd123' %}efghijk{% else %}EFGGG{% endif %}"

(如果不等于abcd123就显示efghijk)

另外还有 ifequal标签,需要传递两个值,第一个是对应的记录,第二个是要等于的值,因为我们数据库中并不存在abcd123,所以页面中显示的值为EFGGG

        <input id="name" type="text" value="{% ifequal my_message.name 'abcd123' %}efghijk{% else %}EFGGG{% endifequal %}" name="name" class="error" placeholder="请输入您的姓名"/>

标签函数的调用 |slice:

<input id="name" type="text" value="{% ifequal my_message.name|slice:'5' 'abcd1' %}efghijk{% else %}EFGGG{% endifequal %}" name="name" class="error" placeholder="请输入您的姓名"/>

slice:'5'  告诉django我们取5个字符  这里将会得到efghijk;如果我们取 6 个字符 将会得到EFGGG

Django数据库的增删改查学习笔记相关推荐

  1. vb.net调用oracle存储过程,vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc...

    vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc 我的VBNETORACLE增删改查学习笔记(本源码在VBNET2008下测试通过)学习VBNET有一段时间了,之 ...

  2. Django数据库数据增删改查操作

    一. 无需实现model.py文件获取实例对象就能直接通过连接数据库进行数据的增删改查操作 # 连接数据库用于查询(查询单个或多个) def db_query(sql):# 打开数据库连接db = p ...

  3. JSON增删改查学习笔记

    JSON语法是一种用于传输和生成数据的协定,很类似于C家族的语言,所以很容易被C家族的语言所解析. 对象:对象包含在{}之间 属性:采用Key-Value对来表示.属性之间使用逗号分开. string ...

  4. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  6. Django实现对数据库数据增删改查(二)

    目录 1.基本框架 1.1.路由分发 1.2.视图函数-逻辑处理 1.3.模板 2.查询功能 2.1.视图函数 2.2.模板函数 3.添加功能 3.1.路由分发 3.2视图函数 3.3.模板 4.编辑 ...

  7. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  8. springboot使用JdbcTemplate完成对数据库的增删改查

    上一篇对springboot有一个简单的介绍以及使用一个简单的例子熟悉了一下springboot写法的简单流程.这一篇介绍springboot使用JdbcTemplate完成对数据库的增删改查. 首先 ...

  9. django关于Mysql增删改查操作以及浏览器数据返回

    1.serializers: from django.core import serializersdef squitData(request):#查询一条#c1=Catinfo.objects.ge ...

  10. python数据库的增删改查_Python|实现数据库的增删改查

    Python|实现数据库的增删改查 2020-10-05 1 前言最近在学flask网页制作,需要用到数据库相关知识,在经过初步学习后实现了用python来实现数据库的相关操作,即增删改查.2 前提条 ...

最新文章

  1. 【转】刨根究底CSS(1):开篇
  2. linux-文件管理-不完整版
  3. mac完美解决NotADirectoryError: [Errno 20] Not a directory: ‘chromedriver
  4. mysql主从-读写分离
  5. CentOS7 安装RabbitMQ 亲测(编写中,有大神请帮忙指点下文中遇到的问题,谢谢)...
  6. 【已解决】Could not get lock /var/lib/dpkg/lock-frontend
  7. 2021-1-29Linux学习纪要
  8. YOLOv3源码解析1-代码整体结构
  9. 这6款APP和游戏,是苹果选出的2019年年度最佳
  10. Github上8个很棒的Vue项目
  11. 解决uniapp在微信小程序显示图片/数据,h5不显示图片/数据。
  12. YARN - Task, Node manager, AppMaster, Resource manager 失败时所做的处理
  13. 数学建模 | MATLAB学习 | 插值 一维插值函数、三次样条插值
  14. Python GPU加速
  15. 思岚科技CES展发布新品“SLAM Cube” 构建智能移动机器人So easy
  16. md5压缩函数用java实现,MD5压缩算法介绍
  17. 虚拟商品帐号交易平台源码_支持个人二维码收款
  18. springboot+editormd上传图片(超详细,如果有问题可留言,会及时回复哦)
  19. 面具Zygigk插件开发入门教程
  20. Oracle表分区(12.2 automatic 表自动分区)

热门文章

  1. 《组合数学引论》第一章部分习题解答
  2. 报童问题(3)-深入分析
  3. javaweb+vue汽车4S店车辆维修管理系统springboot
  4. 码神之路博客部署总结补充
  5. PHP中MD5函数效率
  6. UE4添加人物动画之状态机
  7. 信杂比公式_信噪比怎么计算
  8. 高二计算机考试题库和答案,2017计算机基础考试题库及答案
  9. 【字符串】13. 罗马数字转整数
  10. 程序员修炼之道:务以己任,实则明心——通向务实的最高境界