一 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生命周期 数据库操作相关推荐

  1. 数据库授予用户增删改查的权限的语句_软件测试之浅谈数据库技术概述

    软件测试这一行业,其实对于数据库的要求还是比较高的,最基本的增删改查操作,一定是少不了的.之前看一些企业或者公司面试要求,需要去掌握一些常用的数据库,比如说mysql,Oracle等.今天咱们就说一下 ...

  2. 数据库授予用户增删改查的权限的语句_mysql创建本地用户及赋予数据库权限的方法示例...

    前言 大家在安装 mysql 时通常会生成一个超级用户 root,很多人之后就一直沿用这一个用户,虽然这会很方便,但超级用户权限太大,在所有地方使用它通常是一个安全隐患. 这一点跟操作系统的用户管理也 ...

  3. ManytoMany字段增删改查Django

    Django下ManytoMany 增删改查 建立学生类老师类多对多关系,用ManytoManyField,迁移同步后自动生成中间表tb_Teacher_Student # 学生类 class Stu ...

  4. javaweb简单的登录增删改查系统_利用python操作小程序云数据库实现简单的增删改查!

    不止python,你可以利用任何语言那实现通过http请求来操作你自己的小程序云数据库了 背景 也是在最近吧,小程序更新了云开发 HTTP API 文档,提供了小程序外访问云开发资源的能力,使用 HT ...

  5. mfc连接mysql增删改查_java实现mysql数据库增删改查

    1.连接数据库: import java.sql.Connection; import java.sql.DriverManager; public class DBConnection { stat ...

  6. thinkphp连mysql增删改查_ThinkPHP5.1框架数据库链接和增删改查操作示例

    本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如 本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如下: 一. ...

  7. web项目实现mysql增删改查并从前端页面操作

    1.看下各个包下面的文件,我上一篇文章已经说过了,这里对上一章有一部分重复的 2.User.java是数据库元素写的一个类,代码如下 package com.hqyj.wj.model; //用户信息 ...

  8. java实现对HDFS增删改查(CRUD)等操作

    实现对HDFS增删改查CRUD等操作 1 查找 列出某个目录下的文件名称,hdfs命令如下所示: hdfs dfs –ls/usr/app java代码片段: [plain] view plain c ...

  9. mysql对数据进行增删改查(crud)的操作

    mysql的增删改查(crud)操作 添加(create) 第一种方式 第二种方式 第三种方式 删除(delete) 第一种方式 第二种方式 修改(update) 查询(retrieve) (1)全查 ...

  10. 数据库授予用户增删改查的权限的语句_mysql数据库终端上的增删改查及权限等相关操作...

    ctrl + c 终止 [linux] service mysql start 启动mysql service mysql stop 停止mysql service mysql restart 重启m ...

最新文章

  1. leetcode算法第三题
  2. python如何保证输入键入数字
  3. Caffe 学习笔记1
  4. 《编译原理》第二章知识点
  5. C语言试题五十九之请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回。
  6. python浮点数类型与数学_Python3标准库:decimal定点数和浮点数的数学运算
  7. zTree 优秀的jquery树插件
  8. linux的常用操作——makefile
  9. uva10718 - Bit Mask(贪心)
  10. 行业研究 | 语音识别行业发展现状解读
  11. 熊猫烧香C语言源代码,熊猫烧香病毒是不是用C语言编的
  12. Unity2021如何设置中文模式
  13. python爬取微博评论_python爬虫手把手教你抓取微博评论(完整代码)
  14. (原創) 如何使用ThinkPad的TrackPoint(小紅點)? (NB) (ThinkPad)
  15. Dracoo Master天龙卡牌大师
  16. PNG,JPEG,BMP,JIF图片格式详解及其对比
  17. RuntimeError:CuDNN error:CUDNN_STATUS_EXECUTION_FAILED
  18. ubuntu 强制关闭程序或窗口方法
  19. 新书上市第13天,在亚马逊Kindle电子书人工智能榜第三,与《未来简史》和李开复《人工智能》同榜
  20. android 获取摄像头像素

热门文章

  1. c语言中宏名的作用时段,C语言中的宏定义!
  2. rabbitmq python 发送失败_RabbitMQ Python端发送消息给Java端 接受消息全数字问题
  3. c语言从栈分配地址函数,C语言 子函数return局部变量和栈地址 机制
  4. python数据结构基础的重点内容_Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】...
  5. 【UVA12230】Crossing Rivers(概率/期望)
  6. 【hdoj1021】类斐波那契数列的循环节(f[i]能否mod3?找规律)
  7. C++ 上用 ONNXruntime 部署自己的模型
  8. Aibaba Dubbo 的前世今生以及黑历史 主程序员梁飞 阿里P9(2016年查看)
  9. linux系统数据库导出语句,数据库应用-SQL语句导入导出大全
  10. LeetCode--Reverse Integer(整数反转)Python