django内容回顾:
Django
下载安装
命令行
pip install django==1.11.26 -i 源
pycharm
创建项目
命令行
django-admin startproject 项目名
pycharm
file ——》 new project ——》 django ——》 输入项目路径 ——》 选择解释器 ——》 输入一个app的名称 ——》 create
启动项目
命令行
cd 项目的根目录
python manage.py runserver # 127.0.0.1:8000
python manage.py runserver 80 # 127.0.0.1:80
python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80
pycharm
点绿三角 (没有右键启动)
settings的配置
中间件中注释 csrf的中间件 可以提交POST请求
静态文件的配置:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
DATABASES 数据库
INSTALLED_APPS = []
TEMPLATES 模板 DIRS = [os.path.join(BASE_DIR,'templates')]
APP
创建APP
python manage.py startapp app名
注册APP
INSTALLED_APPS = [
'app名'
或者
'app名.apps.类' # 'app01.apps.App01Config',
]
urls.py
from app01 import views
urlpatterns = [
url(r'^publisher/',views.publisher),
url(r'^add_publisher/',views.add_publisher),
url(r'^del_publisher/',views.del_publisher),
url(r'^edit_publisher/',views.edit_publisher),
]views.py
from django.shotcuts import HttpResponse,render,redirect
def publisher(request):
# 业务逻辑
# 返回响应
# HttpResponse('字符串') # 返回的是字符串
# render(request,'模板的名字',{'k1':v1}) # 返回的一个页面
# redirect('路径') # 重定向
模板语法
render(request,'pub.html',{'all_publishers':all_publishers})
{{ all_publishers }}
{% for i in all_publishers %}
{{ forloop.counter }}
{{ i }}
{{ i.id }} {{ i.pk }}
{{ i.name }}
{% endfor %}
form的注意点:
form标签的属性 action='提交的地址' method='post' novalidate 取消input标签自带的校验
input标签必须要有name属性 有些标签有value值
需要有一个button按钮 或者 type='submit'的input
get 和 post
get : 获取一个页面
途径:
1. 直接在浏览器的地址栏中输入地址 回车
form表单 不指定method
a标签
参数: ?k1=v1&k2=v2
获取参数: request.GET.get('k1')
post : 提交数据
途径:
1. form表单 method = 'post'
获取数据: request.POST.get('k1')
Django使用MySQL数据库的流程:
手动创建一个MySQL数据库
配置数据库
ENGINE MySQL
NAME 数据库的名字
HOST ip
PORT 3306
USER 用户名
PASSWORD 密码在与settings同级目录下的
__init__.py
中写代码:import pymysql
pymysql.install_as_MySQLdb()写models:
form django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=32)
执行迁移的命令
python manage.py makemigrations # 检查已经注册的APP下面的models.py的变更情况
python manage.py migrate # 执行迁移ORM
对象关系映射
对应关系:
类 _> 表
对象 _> 数据行(记录)
属性 _> 字段
ORM能做的事情:
对数据做修改
对表做修改
ORM的操作
from app01 import models
# 查询
models.Publisher.objects.all() # 查询所有的数据 QuerySet 对象列表
models.Publisher.objects.get(name='xxx') # 查询一条数据 只能查有且唯一的数据
models.Publisher.objects.filter(name='xxx') # 查询所有满足条件的数据 对象列表
# 新增
obj = models.Publisher.objects.create(name='xxxx')
obj = models.Publisher(name='xxxx')
obj.save() # 保存到数据库
# 删除
models.Publisher.objects.filter(pk=pk).delete() # 批量删除
models.Publisher.objects.get(pk=pk).delete() # 单条数据的删除
# 更新
models.Publisher.objects.filter(pk=pk).update(name='xx') # 批量更新
obj = models.Publisher.objects.get(pk=pk)
obj.name = 'xxxx'
obj.save() # 保存到数据库
外键
一对多的关系
class Book(models.Model):
name = models.CharField(max_length=32)
pub = models.ForeignKey('Publisher', on_delete=models.CASCADE)
"""
on_delete 在2.0版本之后是必填的
on_delete=
models.CASCADE 级联删除
PROTECT 保护
SET(1)
SET_DEFAULT 设置为默认值设置为某一个值
SET_NULL 设置为空
DO_NOTHING 什么都不变
"""
查询
all_books = models.Book.objects.all()
for book in all_books:
print(book)
print(book.id)
print(book.pk)
print(book.name)
print(book.pub) # 所关联的出版社对象 对象.外键
print(book.pub_id) # 所关联的出版社对象的id 对象.外键_id新增
models.Book.objects.create(name=book_name,pub=models.Publisher.objects.get(pk=pub_id))
obj = models.Book.objects.create(name=book_name, pub_id=pub_id)编辑
book_obj.name = book_name
book_obj.pub_id = pub_id
# book_obj.pub = 出版社的对象
book_obj.save()
models.Book.objects.filter(pk=pk).update(name=book_name,pub_id=pub_id)
django内容回顾:的更多相关文章
- Django 内容回顾
模板 变量 {{ }} 标签 {% %} if elif else for empty forloop() with...as csrf_token 过滤器 default length add da ...
- python 全栈开发,Day72(昨日作业讲解,昨日内容回顾,Django多表创建)
昨日作业讲解 1.图书管理系统 实现功能:book单表的增删改查 1.1 新建一个项目bms,创建应用book.过程略... 1.2 手动创建static目录,并在目录里面创建css文件夹,修改set ...
- python 全栈开发,Day112(内容回顾,单例模式,路由系统,stark组件)
一.内容回顾 类可否作为字典的key 初级 举例: class Foo(object): pass _registry = { Foo:123 } print(_registry) 执行输出: {&l ...
- django知识点回顾与补充
一.django知识点回顾 1.Cookie操作 - 客户端本地存储的键值对 2.Session操作 - 3.URL路由 - /index -> view.函数 4.MTV 5.View中返回方 ...
- 04 DRF内容回顾、用户登录 (含跨域) (vuex vue-cookie)、用户认证 (Auth认证)(拦截器)
1.内容回顾 1.视图中常见的继承 2.频率访问控制源码 3.序列化,反序列化 2.初始化代码 1.后端代码:AuthView (1)目录结构 (2)urls (3)view (4)注释掉cors ( ...
- 基本数据类型-集合(set)_上周内容回顾(字符串_数字_列表_元组_字典_集合)
上周内容回顾 1.字符串 2.数字 除了布尔类型外,int.long.float和complex都可以使用的运算为:加.减.乘.除.整除.幂运算和取余 3.列表和元组 列表的内容可变,可以包含任意对象 ...
- Netty源码分析第4章(pipeline)---->第7节: 前章节内容回顾
Netty源码分析第四章: pipeline 第七节: 前章节内容回顾 我们在第一章和第三章中, 遗留了很多有关事件传输的相关逻辑, 这里带大家一一回顾 首先看两个问题: 1.在客户端接入的时候, N ...
- Python并发编程内容回顾
Python并发编程内容回顾 并发编程小结 目录 • 一.到底什么是线程?什么是进程? • 二.Python多线程情况下: • 三.Python多进程的情况下: • 四.为什么有这把GIL锁? • 五 ...
- JavaScript内容回顾
<!DOCTYPE html> <!--JavaScript内容回顾--> <html lang="en"> <head> < ...
随机推荐
- 实操《kubernetes网络权威指南》之tun设备
跟着网上作一次,OK的. tun.c #include <net/if.h> #include <sys/ioctl.h> #include <sys/stat.h> ...
- R-3 t分布--t置信区间--t检验
本节内容: 1:t分布存在的意义是什么 2:t分布的置信区间 3:t分布检验 一.t分布存在的意义是什么 数据分析中有一块很大的版图是属于均值对比的,应用广泛. 例如:对比试验前后病人的症状,证明某种 ...
- 01. Go 语言简介
Go语言简介 引用原文地址:http://m.biancheng.net/golang/ Go语言也称 Golang,兼具效率.性能.安全.健壮等特性.这套Go语言教程(Golang教程)通俗易懂,深 ...
- 最小化MarkdownPad 2安装体积(win10)
一.原因 MarkdownPad2在Win10当中可能无法正常运行,右侧预览界面会出现错误"This view has crashed!"查阅官网FAQ得知大多数情况下安装Awes ...
- 任意视频批量转码MP4-H264助手
使用说明 简单的粗暴的小工具,利用windows命令行调用ffmpeg完成任意格式视频转换成H264编码的MP4视频,以确保视频可以在主流浏览器中直接播放,如:Chrome.Firefox等. 只需要 ...
- linux的vi编辑器常用用法一览
vi 命令用于编辑文本文件,语法: vi 文件名 vi 是一个比较强大的编辑工具,类似于windows下的notepad,但是功能要强大的多.vi分为三种模式,分别是“一般模式”,“编辑模式”,“命令 ...
- Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: python小爬虫 PS:如有需要Python学习资料的小伙伴可以 ...
- MySQL学习——数据类型
MySQL学习——数据类型 摘要:本文主要学习了MySQL数据库的数据类型. 整数类型 MySQL主要提供的整数类型有tinyint.smallint.mediumint.int.bigint,其属性 ...
- JavaWeb之Cookie&Session
Cookie 直译是:小饼干.实际上,Cookie就是由服务器给客户端,并且存储在客户端上的一份小数据 应用场景 自动登录,查看浏览记录,购物车 Cookie存在的意义 HTTP请求是无状态的,客户端 ...
- Spring Boot的注解,你知道或者不知道的都在这里!
1.1 定义 Annotation(注解),用于为Java代码提供元数据.简单理解注解可以看做是一个个标签,用来标记代码.是一种应用于类.方法.参数.变量.构造器及包的一种特殊修饰符. 1.2 注解的 ...