6月13日 python学习总结 Django框架
1. 内容回顾
1. 基础必会三件套
from django.shortcuts import HttpResponse, render, redirect
- HttpResponse("响应体内容")
- render(request, "login.html",{“k”: "v"}) --> 打开一个文件,把文件的内容读取出来
- redirect("具体的网址") --> 回复一个让浏览器请求我指定网址的响应
2. form表单提交数据,注意事项:
1. 是form不是from,必须设置action和method这两个属性
2. 获取用户输入的表单标签都要放在form里面,必须要有name属性
3. 必须要有submit按钮
3. Django如何获取form表单post过来的数据
1. request.POST --> 所有数据的大字典
request.POST.get("pwd")
2. request.method --> 得到的是请求的方法(大写的) - GET/POST
4. GET和POST
1. 什么时候用GET?
1. 获取一个网页的时候
2. 搜索引擎检索 /web?query=新垣结衣
2. 什么时候用POST?
向服务端提交数据 (form表单提交数据)
5. Django中的APP概念
1. 创建APP命令
python3 manage.py startapp app名字
2. 告诉Django你新建的app叫啥
settings.py里面,INSTALLED_APPS这个配置项里面加上你的app
6. ORM
1. ORM概念和优劣势
2. ORM的本质
对象 关系 映射
类 <--> 数据表
对象 <--> 数据行
属性 <--> 字段
3. Django中ORM的使用
1. 手动新建一个数据库
2. 告诉Django连接哪个数据库
settings.py里面配置数据库连接信息:
# 数据库相关的配置项
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 告诉Django使用MySQL的那套代码
'NAME': 'day63', # 数据库的名字
'HOST': '127.0.0.1', # 主机
'PORT': 3306, # 端口
'USER': 'root', # 用户名
'PASSWORD': '123' # 密码
}
}
3. 告诉Django用pymysql模块代替默认的MySQLdb去连接MySQL
在和settings.py同目录下的 __init__.py文件中做配置
import pymysql
pymysql.install_as_MySQLdb()
4. 在app下面的models.py文件中 定义 类
必须要继承models.Model
class Publisher(models.Model):
id = models.AutoField(primary_key=True) # 自增的主键
name = models.CharField(max_length=64) # varchar(64)
5. 两条命令
1. python3 manage.py makemigrations --> 把models.py里面的改动登记到小本本上
2. python3 manage.py migrate --> 将登记的改动翻译成SQL语句,到数据库中执行
2. 新建Django项目的步骤:
1. 创建项目(APP)
2. 创建数据库和配置数据库
3. 配置templates和静态文件相关
4. 注释掉 settings.py中 csrf那一行
3. Django项目真正的业务逻辑
1. 输入 127.0.0.1:8000/publisher_list/ --> 返回一个页面,页面上将数据库中所有的出版社要展示出来
4. 今日内容
1. 出版社的删除
怎么知道用户点击删除的时候删除的是哪一条记录
- id用来在数据库中唯一确定一条记录
127.0.0.1:8000/delete_publisher/?id=2
2. 出版社的编辑
设计 URL
127.0.0.1:8000/edit_publisher/?id=2
3. 书籍的增删改查
ORM中的外键关联
publisher = models.ForeignKey(to=Publisher) # 外键关联Publisher这张表
book_obj.publisher --> 和我这本书关联的出版社对象
book_obj.publisher_id --> 和我这本书关联的出版社的id值,也就是数据库中真正存的字段值
1. 查和增
6月13日 python学习总结 Django框架的更多相关文章
- 6月15日 python学习总结 Django模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- 6月19日 python学习总结 Django之路由系统
Django之路由系统 Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调 ...
- 4月13日 python学习总结 组合与封装
一.组合 解决类与类之间代码冗余问题有两种解决方案:1.继承 2.组合 1.继承:描述的是类与类之间,什么是什么的关系 2.组合:描述的是类与类之间的关系,是一种什么有什么关系 一个类产生的 ...
- 4月2日 python学习总结
昨天内容回顾: 1.迭代器 可迭代对象: 只要内置有__iter__方法的都是可迭代的对象 既有__iter__,又有__next__方法 调用__iter__方法==>得到内置的迭代器对象 调 ...
- 6月11日 python学习总结 框架理论
Web框架本质及第一个Django实例 Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web ...
- 4月8日 python学习总结 模块与包
一.包 #官网解释 Packages are a way of structuring Python's module namespace by using "dotted module n ...
- 4月12日 python学习总结 继承和派生
一.继承 什么是继承: 继承是一种新建类的方式,在python中支持一个子类继承多个父类 新建类称为子类或派生类 父类可以称之为基类或者超类 子类会遗传父类的属性 2. 为什么继承 ...
- 4月11日 python学习总结 对象与类
1.类的定义 #类的定义 class 类名: 属性='xxx' def __init__(self): self.name='enon' self.age=18 def other_func: pas ...
- 5月31日 python学习总结 JavaScript概述
JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...
随机推荐
- Solution -「HEOI/TJOI 2016」「洛谷 P2824」排序
\(\mathcal{Description}\) Link. 给定排列 \(\{p_n\}\) 和 \(m\) 次局部排序操作,求操作完成后第 \(q\) 位的值. \(n,m\le10 ...
- Solution -「HDU #6566」The Hanged Man
\(\mathcal{Description}\) Link. 给定一棵含 \(n\) 个点的树,每个结点有两个权值 \(a\) 和 \(b\).对于 \(k\in[1,m]\),分别求 \[ ...
- 走进Task(2):Task 的回调执行与 await
目录 前言 Task.ContinueWith ContinueWith 的产物:ContinuationTask 额外的参数 回调的容器:TaskContinuation Task.Continue ...
- 使用SetTrustedCredmanAccessPrivilege获取已保存的凭据
windows系统中有一个名为SeTrustedCredmanAccessPrivilege的权限,使拥有该特权的进程可作为受信任的调用者访问凭据管理器. 凭据管理器可以从控制面板 -> ...
- Python基础—迭代器、生成器(Day13)
一.迭代器 1.可迭代对象:遵循可迭代协议,内部含有__iter__方法的对象就叫做可迭代对象.(str.list.tulpe.dict.set) 查询数据类型的方法 s = 'laonanhai' ...
- Vue2.0源码学习(2) - 数据和模板的渲染(下)
vm._render是怎么实现的 上述updateComponent方法调用是运行了一个函数: // src\core\instance\lifecycle.js updateComponent = ...
- JUC之Java中的阻塞队列及其实现原理
在文章线程池实现原理 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中介绍了线程池的组成部分,其中一个组成部分就是阻塞队列.那么JAVA中的阻塞队列如何实现的呢? 阻塞队列,关键字是阻塞 ...
- Python语法进阶(2)- 正则表达式
1.初识正则表达式 1.1.什么是正则表达式 正则表达式是一个特殊的字符序列,便于检查一个字符串是否与某种模式匹配:应用于字符串,在字符串中通过复杂的过滤筛选等操作得到我们想要的数据: 正则表达式的特 ...
- BugKu-Misc-简单取证1
下载文件压缩包,解压得到文件夹config,根据题目得知为取证,使用工具mimikatz, github地址:https://github.com/ParrotSec/mimikatz 将文件夹con ...
- eBPF会成为服务网格的未来吗?
服务网格现状 服务网格为服务提供了复杂的应用层网络管理,如服务发现.流量路由.弹性(超时/重试/断路).认证/授权.可观察性(日志/度量/追踪)等. 在分布式应用的早期,这些要求是通过直接将所需的逻辑 ...