用户增删改查 django生命周期 数据库操作
一 django生命周期
1 浏览器输入一个请求(get/post)2 响应到django程序中3 执行到url,url通过请求的地址匹配到不同的视图函数4 执行对应的视图函数,此过程可以查询数据库,拿到模板5 查询完数据库得到数据,将数据渲染到模板上6 返回浏览器
二 用户增删改查
1 orm介绍
tools--->Run manage.py Taskpython3 manage.py makemigrations只需要敲命令:makemigrations(记录数据库的修改记录)python3 manage.py migrate只需要敲命令:migrate(把数据同步到数据库)
2 orm能干和不能干的事
1 能创建数据表,新增,删除字段2 不能创建数据库
3 orm增加字段:(注意数据库迁移命令2条)
注意:后来增加的字段,需要有默认值phone=models.CharField(max_length=64,default='120')
4 删除字段
注释掉字段,执行数据库迁移命令
5 修改数据
直接修改字段,执行数据库迁移命令
6 user的增删改查
***重点****:1 单表查询所有用户:models.User.objects.all() 得到的是 queryset对象(当成列表),列表里面,一个一个的对象[user1,user2]2 render(request, 'userlist.html', {'user_list': ret})3 模板里: {% for user in user_list %} #要循环的内容 {{user.name}} {% endfor%}4 get请求携带参数: http://127.0.0.1:8000/deleteuser/?id=1 后台取值:request.GET.get('id') request.GET['id']5 orm删除记录 models.User.objects.filter(id=id).delete() 返回值:影响的行数6 前台post提交的数据取值:name=request.POST.get('name')7 orm保存: 两种方式: 1 user=models.User.objects.create(name=name,password=pwd,address=addr) 2 user=models.User(name=name,password=pwd,address=addr) user.save()8 orm查询单条数据:user=models.User.objects.filter(id=id).first()9 orm的修改 models.User.objects.filter(id=id).update(name=name,password=pwd,address=addr)
代码示例
urls.py
from app01 import viewsurlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^userlist/', views.userlist), url(r'^deleteuser/', views.deleteuser), url(r'^adduser/', views.adduser), url(r'^updateuser/', views.updateuser),]
查:
def userlist(request): if request.method == 'GET': # 查询user表中所有数据.--相当于sql select * from app01_user; # 返回结果是QuerySet对象(先当成列表) # [user1,user2] ret = models.User.objects.all() # print(type(ret)) # for i in ret: # print(type(i)) # print(i.name) return render(request, 'userlist.html', {'user_list': ret})
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><table border="1"> <thead> <tr> <th>id</th> <th>name</th> <th>password</th> <th>addr</th> <th>删除</th> <th>编辑</th> </tr> </thead> <tbody> {% for user in user_list %} <tr> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.password }}</td> <td>{{ user.address }}</td> <td><a href="/deleteuser?id={{ user.id }}">删除</a></td> <td><a href="/updateuser?id={{ user.id }}">编辑</a></td> </tr> {% endfor %} </tbody> <a href="/adduser/">新增用户</a></table></body></html>
删:
def deleteuser(request): if request.method == 'GET': id = request.GET.get('id') ret = models.User.objects.filter(id=id).delete() print(ret) return redirect('/userlist/')
添加:
def adduser(request): if request.method=='GET': return render(request,'adduser.html') elif request.method=='POST': name=request.POST.get('name') pwd=request.POST.get('password') addr=request.POST.get('addr') # 方式一 # user=models.User.objects.create(name=name,password=pwd,address=addr) # 方式二 user=models.User(name=name,password=pwd,address=addr) user.save() print(user.name) print(type(user)) return redirect('/userlist/')
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>新增用户</title></head><body><form action="" method="post"> <p>用户名: <input type="text" name="name"></p> <p>密码: <input type="password" name="password"></p> <p>地址: <input type="text" name="addr"></p> <input type="submit" value="提交"> </form></body></html>
修改:
def updateuser(request): if request.method=='GET': id=request.GET.get('id') user=models.User.objects.filter(id=id).first() return render(request,'updateuser.html',{'user':user}) if request.method=='POST': id=request.POST.get('id') # id2=request.GET.get('id') # print(id) # print(id2) name=request.POST.get('name') pwd=request.POST.get('password') addr=request.POST.get('addr') models.User.objects.filter(id=id).update(name=name,password=pwd,address=addr) return redirect('/userlist/')
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>修改数据</title></head><body><form action="/updateuser/?id={{ user.id }}" method="post"> <p><input type="hidden" name="id" value="{{ user.id }}"></p> <p>用户名: <input type="text" name="name" value="{{ user.name }}"></p> <p>密码: <input type="text" name="password" value="{{ user.password }}"></p> <p>地址: <input type="text" name="addr" value="{{ user.address }}"></p> <input type="submit" value="提交"> </form></body></html>
三 数据库操作
class Publish(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) email = models.EmailField() addr = models.CharField(max_length=64)
class Author(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) address = models.CharField(max_length=32)
class Book(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) 小数部分占2位 price = models.DecimalField(max_digits=5, decimal_places=2) 一对多的关系确立,关联字段写在多的一方,orm自动在publish后面加id,publish_id publish = models.ForeignKey(to='Publish', to_field='id') 多对多关系,orm会自动创建第三张表 authors = models.ManyToManyField(to='Author')
转载于:https://www.cnblogs.com/zhangshengxiang/p/10034195.html
用户增删改查 django生命周期 数据库操作相关推荐
- 数据库授予用户增删改查的权限的语句_软件测试之浅谈数据库技术概述
软件测试这一行业,其实对于数据库的要求还是比较高的,最基本的增删改查操作,一定是少不了的.之前看一些企业或者公司面试要求,需要去掌握一些常用的数据库,比如说mysql,Oracle等.今天咱们就说一下 ...
- 数据库授予用户增删改查的权限的语句_mysql创建本地用户及赋予数据库权限的方法示例...
前言 大家在安装 mysql 时通常会生成一个超级用户 root,很多人之后就一直沿用这一个用户,虽然这会很方便,但超级用户权限太大,在所有地方使用它通常是一个安全隐患. 这一点跟操作系统的用户管理也 ...
- ManytoMany字段增删改查Django
Django下ManytoMany 增删改查 建立学生类老师类多对多关系,用ManytoManyField,迁移同步后自动生成中间表tb_Teacher_Student # 学生类 class Stu ...
- javaweb简单的登录增删改查系统_利用python操作小程序云数据库实现简单的增删改查!
不止python,你可以利用任何语言那实现通过http请求来操作你自己的小程序云数据库了 背景 也是在最近吧,小程序更新了云开发 HTTP API 文档,提供了小程序外访问云开发资源的能力,使用 HT ...
- mfc连接mysql增删改查_java实现mysql数据库增删改查
1.连接数据库: import java.sql.Connection; import java.sql.DriverManager; public class DBConnection { stat ...
- thinkphp连mysql增删改查_ThinkPHP5.1框架数据库链接和增删改查操作示例
本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如 本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如下: 一. ...
- web项目实现mysql增删改查并从前端页面操作
1.看下各个包下面的文件,我上一篇文章已经说过了,这里对上一章有一部分重复的 2.User.java是数据库元素写的一个类,代码如下 package com.hqyj.wj.model; //用户信息 ...
- java实现对HDFS增删改查(CRUD)等操作
实现对HDFS增删改查CRUD等操作 1 查找 列出某个目录下的文件名称,hdfs命令如下所示: hdfs dfs –ls/usr/app java代码片段: [plain] view plain c ...
- mysql对数据进行增删改查(crud)的操作
mysql的增删改查(crud)操作 添加(create) 第一种方式 第二种方式 第三种方式 删除(delete) 第一种方式 第二种方式 修改(update) 查询(retrieve) (1)全查 ...
- 数据库授予用户增删改查的权限的语句_mysql数据库终端上的增删改查及权限等相关操作...
ctrl + c 终止 [linux] service mysql start 启动mysql service mysql stop 停止mysql service mysql restart 重启m ...
最新文章
- leetcode算法第三题
- python如何保证输入键入数字
- Caffe 学习笔记1
- 《编译原理》第二章知识点
- C语言试题五十九之请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回。
- python浮点数类型与数学_Python3标准库:decimal定点数和浮点数的数学运算
- zTree 优秀的jquery树插件
- linux的常用操作——makefile
- uva10718 - Bit Mask(贪心)
- 行业研究 | 语音识别行业发展现状解读
- 熊猫烧香C语言源代码,熊猫烧香病毒是不是用C语言编的
- Unity2021如何设置中文模式
- python爬取微博评论_python爬虫手把手教你抓取微博评论(完整代码)
- (原創) 如何使用ThinkPad的TrackPoint(小紅點)? (NB) (ThinkPad)
- Dracoo Master天龙卡牌大师
- PNG,JPEG,BMP,JIF图片格式详解及其对比
- RuntimeError:CuDNN error:CUDNN_STATUS_EXECUTION_FAILED
- ubuntu 强制关闭程序或窗口方法
- 新书上市第13天,在亚马逊Kindle电子书人工智能榜第三,与《未来简史》和李开复《人工智能》同榜
- android 获取摄像头像素
热门文章
- c语言中宏名的作用时段,C语言中的宏定义!
- rabbitmq python 发送失败_RabbitMQ Python端发送消息给Java端 接受消息全数字问题
- c语言从栈分配地址函数,C语言 子函数return局部变量和栈地址 机制
- python数据结构基础的重点内容_Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】...
- 【UVA12230】Crossing Rivers(概率/期望)
- 【hdoj1021】类斐波那契数列的循环节(f[i]能否mod3?找规律)
- C++ 上用 ONNXruntime 部署自己的模型
- Aibaba Dubbo 的前世今生以及黑历史 主程序员梁飞 阿里P9(2016年查看)
- linux系统数据库导出语句,数据库应用-SQL语句导入导出大全
- LeetCode--Reverse Integer(整数反转)Python