Django单表的增删改查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | 1.Django 下载 命名行 pip install django = = 1.11 . 16 pip install django = = 1.11 . 16 - i https: / / pypi.doubanio.com / simple / pycharm settings 解释器 点 + 号 输入Django 选择版本 下载 2. 创建项目 命令行 django - admin startproject 项目名 pycharm file new project 选择Django 输入项目名称 选择解释器 输入APP名称 创建项目 3. 启动项目 命令行 切换到项目的根目录下 manage.py python manage.py runserver # 127.0.01:8000 python manage.py runserver 80 # 127.0.01:80 python manage.py runserver 0.0 . 0.0 : 80 # 0.0.0.0:80 pycharm 修改配置 点三角启动 dj 4. 配置文件 数据库 静态文件 STATIC_URL = '/static/' # 别名 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static' ) , ] 模板 TEMPLARTES DIRS [os.path.join(BASE_DIR, 'templates' )] 中间件 注释掉 'django.middleware.csrf.CsrfViewMiddleware' 5.urls .py 写url和函数的对应关系 urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r 'login/' , views.login), url(r 'index/' , views.index), url(r 'test/' , views.test), ] 6. 函数 参数: request 跟请求相关的内容 request.method 请求方式 GET POST PUT request.POST form表单提交POST请求传递的数据 {} [] get request.GET URL地址上的参数 {} 返回值: from django.shortcuts import HttpReponse,render,redirect HttpReponse( '字符串' ) 返回一些字符串 render(request, '模板的文件名' ) 返回一个完整的HTML页面 redirect( '要跳转的地址' ) 重定向 Location : 地址 7.app 创建APP 命令行 python manage.py startapp app名称 pycharm tools run manage.py task startapp app名称 注册APP INSTALLED_APPS = [ 'app01' 或者 'app01.apps.App01Config' , ] 8.form 表单 action = ' ' method =' post' action 提交的地址 method 请求方式 所有的 input 标签要有name属性 一个 input 标签的 type = 'submit' 或者 button 9.get 和 post的区别 get 获取一个页面 路径 / ?name = alex&pwd = alexdsb request.GET post 提交数据 request.POST 10.Django 使用mysql数据库的流程: 创建一个mysql数据库 在settings中配置DATABASES ENGINE : mysql ; NAME: 数据库的名称; HOST: IP '127.0.0.1' PORT: 3306 ; USER: 用户名; PASSWORD: '密码' ; 告诉Django使用pymysql连接数据库 在与settings同级目录下的__init__.py写代码: import pymysql pymysql.install_as_MySQLdb() . 写表 在app下的models.py中写类(继承models.Model) class User(models.Model): # 默认表名 app01_user name = models.CharField(max_length = 32 ) # varchar(32) pwd = models.CharField(max_length = 32 ) def __str__( self ): return self .name 执行数据库迁移的命令 python manage.py makemigrations # 记录models的变更记录 python manage.py migrate # 把变更记录的操作同步到数据库中 11.ORM 对象和关系型数据库的一个映射 同过操作对象的方式操作数据库的内容 对应关系 类 ___> 表 对象 ___> 记录 数据行 属性 ___> 字段 ORM的功能: 操作数据表 操作记录 具体的操作 from app01 import models # 获取所有数据 models.User.objects. all () # __> QuerySet 对象列表 # 获取单个对象 获取不到数据或者拿到多条数据就报错 models.User.objects.get(name = 'alex' ,pwd = '111' ) # __> 对象 # 获取满足条件的所有对象 models.User.objects. filter (name = 'alex' ,pwd = '111' ) # __> QuerySet 对象列表 单表的增删改查 1. 展示 model class Publisher(models.Model): # app01_publisher pid = models.AutoField(primary_key = True ) # pid 主键 name = models.CharField(max_length = 32 ) # 出版社名称 def __str__( self ): return self .name 设计URL from app01 import views # 展示出版社 url(r '^publisher_list/' ,views.publisher_list ), 写函数 from app01 import models # 展示出版社 def publisher_list(request): # 从数据库获取所有出版社对象 all_publisher = models.Publisher.objects. all () return render(request, 'publisher_list.html' , { 'all_publisher' : all_publisher}) 写模板 <table border = "1" > <tr> <th> ID < / th> <th>名称< / th> < / tr> { % for foo in all_publisher % } <tr> <td>{{ foo.pk }}< / td> <td>{{ foo.name }}< / td> < / tr> { % endfor % } < / table> 模板语法 {{ 变量 }} 循环 { % for i in all_publisher % } {{ forloop.counter }} # 当前循环的测试 { % endfor % } 2. 增加、删除、编辑 见代码 3. 新增ORM操作 # 新增数据 ret = models.Publisher.objects.create(name = new_name) # ret 是对象 # 删除数据 models.Publisher.objects.get(pk = pk).delete() # 修改数据 obj_list = models.Publisher.objects. filter (pk = pk) obj = obj_list[ 0 ] obj.name = new_name # 内存中修改数据 obj.save() # 向数据库提交,保存到数据库中 |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步