一、今日内容总结:

day62
内容回顾:
1. django有关所有命令:
pip install django==1.11.14
django-admin startproject 项目名称
cd 项目
python manage.py runserver 80 0.0.0.0:80
python manage.py startapp app01
python manage.py makemigrations # 保存models修改记录
python manage.py migrate # 操作数据表 2. settings相关:
1. templates 模板相关 DIRS
2. static 静态文件相关
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
3. 注释CSRF中间件 方便你提交POST请求
4. DATABASES
引擎:mysql
NAME: 数据库名称
HOST:IP地址
PORT: 端口号 3306
USER: 用户名 root
PASSWORD: 密码 ''
5. APP
INSTALLED_APPS=[
'app01',
'app01.apps.App01Config'
]
3.GET和POST
GET:
1.form表单 默认get请求
2.直接在浏览器输入URL
3.a标签 127.0.0.1:8000/add_publisher/?id=1&name=alex request.GET 大字典
request.GET.get('id','')
request.GET['id']
POST:
form表单提交 method='post' 参数不在URL显示,参数在请求体当中 request.POST 大字典
request.POST.get('id','')
request.POST['id']
4. mysql数据的使用:
1. 创建mysql数据库
2. settings.py中要配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day61',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '',
}
}
3. 告诉django使用pymysql来连接数据库:
在与项目同名的文件夹下的__init__.py文件中写:
import pymysql
pymysql.install_as_MySQLdb()
4. 在app01/models.py写类(必须继承models.Model)
class Publisher(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32,null=False,unique=True) 5. 执行数据库迁移两条命令
python manage.py makemigrations # 保存models修改记录
python manage.py migrate # 操作数据表
5. ORM操作:
1. 查
models.Publisher.objects.all() # 查询所有的对象 ——》对象列表 QuerySet
models.Publisher.objects.get(id='') # 查询一个对象 ——》单独的对象
models.Publisher.objects.filter(id='') # 查询所有符合条件的对象 ——》对象列表 QuerySet
models.Publisher.objects.filter(id='').order_by('id') 2. 增
models.Publisher.objects.create(name='xinhuachubanshe') 3. 删
# 删除一个对象
obj_list = models.Publisher.objects.filter(id='')
obj_list[0].delete()
# 删除所有符合条件的对象
models.Publisher.objects.filter(id='').delete() 4. 改
obj_list = models.Publisher.objects.filter(id='')
obj = obj_list[0]
obj.name = 'asdasd'
obj.save()
6. 模板语法:
render(request,'HTML文件',{'publishers':obj_list}) {{ 变量 }} for 循环
{% for i in publishers %}
{{ i.name }}
{% endfor %} 今日内容:
1. 设计图书管理系统的表结构
书 出版社 作者 书和出版社 多对一
书和作者 多对多 2. 书的增删改查 3. 外键
class Book(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=32, null=False, unique=True)
publisher = models.ForeignKey(to='Publisher',on_delete=models.CASCADE) books = models.Book.objects.all() for book in books:
print(book.publisher_id) # 数据库中的id
print(book.publisher) # 关联的对象
# print(book.publisher.addr)
print('=' * 30) 创建外键关联的方式 publisher = 关联的对象
publisher_obj = models.Publisher.objects.get(id=publisher_id)
book_obj = models.Book.objects.create(title=title, publisher=publisher_obj) publisher_id = 关联对象的id
book_obj = models.Book.objects.create(title=title, publisher_id=publisher_id) 4. 模板相关
{% if edit_book.publisher_id == publish.id %}
<option value="{{ publish.id }}" selected>{{ publish.name }}</option>
{% elif 其他条件 %}
操作
{% else %}
<option value="{{ publish.id }}">{{ publish.name }}</option>
{% endif %}

课上笔记

1.if模板语法

  {% if 条件%}

    操作....

  {%elif 条件%}

    操作

  {%endif%}

2.外键

  publisher = models.ForeignKey(to='Publisher')
  操作时:
  obj.publisher = 对象
  或
  obj.publisher_id = id

3.两种改方法不一样

obj1 = edit_obj_list[0]

obj2 = edit_obj_list[0]
两者值一样,但内存地址id不一样
  edit_obj_list[0].name = new_name
  edit_obj_list[0].save()
  obj = edit_obj_list[0]
  obj.name = new_name
  obj.save()
不一样

4.其他

    

二、预习和扩展


1.str 和 repr
  列表【】中的对象 直接打印列表会调用repr,因为列表时机器,直接打印对象会调用str

  

python全栈开发day62-两表操作增删改查,外键,if else模板语法的更多相关文章

  1. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  2. 巨蟒python全栈开发django7:多表增加和查询

    1.回顾内容&&补充 补充1: 补充2: 这个选择的是第二个解释器. 选择第一个的话,只是针对当前的项目,如果再开新项目的话,需要重新下载安装相关的包. 点击保存,因为我们注释掉了,创 ...

  3. django模型层之多表操作 增删改查

    多表操作之创建模型 这边以书为中心创建一个模型 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系(on ...

  4. Django学习笔记--数据库中的单表操作----增删改查

    1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...

  5. $Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境

    在Python脚本中调用Django环境. import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETTING ...

  6. python全栈开发 * 表格标签 表单标签 css 引入方式 * 180807

    html部分 一.表格标签<table> 1.一个表格<table>由每行<tr>组成的,每行是由<td>组成的. 注意: 一个表格是由行组成的(行是由 ...

  7. python 全栈开发,Day101(redis操作,购物车,DRF解析器)

    昨日内容回顾 1. django请求生命周期? - 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者po ...

  8. python 全栈开发,Day8(文件操作)

    一.文件操作流程 文件以什么编码存储的,就以什么编码打开 参数: 1.文件路径 2.编码方式,encode 3.执行动作(打开方式):只读,只写,追加,读写,写读... 打开一个已经存在的文件 f = ...

  9. python 全栈开发,Day71(模型层-单表操作)

    昨日内容回顾 1. {% include '' %} 2. extend base.html: <html> ..... ..... ..... {% block content%} {% ...

随机推荐

  1. 【51nod1847】 奇怪的数学题

    就当我是 A 了此题吧... 首先预备知识有点多(因为题目要处理的东西都挺毒瘤): 杜教筛运用(当然你可以用其他筛?) 第二类斯特林数相关定理 下降阶乘幂相关定理 min25 筛运用 好了可以关掉本题 ...

  2. Struts2框架下的文件上传文件类型、名称约定

    Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...

  3. Windows x64汇编函数调用约定

    最近在写一些字符串函数的优化,用到x64汇编,我也是第一次接触,故跟大家分享一下. x86:又名 x32 ,表示 Intel x86 架构,即 Intel 的32位 80386 汇编指令集. x64: ...

  4. 阿里云rds mysql数据库数据恢复到ecs中

    背景:aliyun上的rds数据库快满了,于是删除了某个备份的表后面大boss说是有用的表,需要恢复回来,阿里云有7天内的物理全量备份(通过percona-xtrabackup备份的)第一时间应该延长 ...

  5. python习题实例(上)_update18/07/03

    用以记录python学习过程中做过的小习题~ ヾ(◍°∇°◍)ノ゙ 1.生成两个列表,分别存放将100以内的偶数&奇数 odd_number=[] even_number=[] for i i ...

  6. MySql 使用规范推荐(转)

    在java应用开发中深知数据库的重要性,绝大多数情况下数据库的性能决定了程序的性能,前期如果埋下的坑越多到后期会成为整个程序的瓶颈,所以希望java开发者一定要重视!!!! 一.基础规范 1.使用In ...

  7. Laravel 5.2数据库--多个关联关系,带条件约束的渴求式加载的问题

    ### 今天在连表获取数据的时候,老是获取不到想要的,确实有点无力适从的感觉. 归根到底,还是对laravel不够熟悉,至少是数据库操作那块. ### 问题是这样的: 我想要通过连表中间表,拿中间表的 ...

  8. liunx 安装jdk1.8

    采用解压压缩文件形式安装 第一步:将jdk压缩文件上传至home目录下面 第二步:目录切换至/usr目录下   cd /usr 创建java目录   mkdir   java 第三步:将jdk 压缩文 ...

  9. python基础教程(第二版)

    开始学习python,根据Python基础教程,把里面相关的基础章节写成对应的.py文件 下面是github上的链接 python基础第1章基础 python基础第2章序列和元组 python基础第3 ...

  10. PID控制器开发笔记之八:带死区的PID控制器的实现

    在计算机控制系统中,由于系统特性和计算精度等问题,致使系统偏差总是存在,系统总是频繁动作不能稳定.为了解决这种情况,我们可以引入带死区的PID算法. 1.带死区PID的基本思想 带死区的PID控制算法 ...