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)
最新文章
- CentOS编译安装NodeJS+Express
- 构造方法 static 块 {}块 执行顺序
- 2015GitWebRTC编译实录15
- linux下 C++ 读取mat文件 MATLAB extern cyphon scipy 未完待续
- ris'In App Purchase总结
- HTTP Status 500 - javax.servlet.ServletException
- js下拉菜单默认值为当前年份,下拉菜单的选项为当前年份往前推5年
- jquery字体更改后的鼠标-影像学改变//凝视内容
- (中等) POJ 2482 Stars in Your Window,静态二叉树。
- TensorFlow安装-ubuntu
- 关于xml文档使用出现的错误及其解决方法
- bugku crypto 告诉你一个秘密(ISCCCTF)
- linux云主机cpu一直很高降不下来,系统日志报nf_conntrack: table full, dropping packet.
- 第四周读书笔记——读《我是一只IT小小鸟》有感
- Iowait的成因、对系统影响及对策--systemtap
- 12.15daily_scrum
- ASP.NET MVC Area 的使用
- angular2.0---服务Service,使用服务进行数据处理
- The Ribbon Tab with id: ";Ribbon.Read"; has not been made available for this page or does not exist.
- 超全面的JavaWeb笔记day09<;Servlet&;GenericServlet&;HttpServlet&;ServletContext>;
热门文章
- 201871010111-刘佳华《面向对象程序设计(java)》第十四周学习总结
- 二叉搜索树中第K小的元素
- 设计模式-Template(行为模式) 采用 继承的方式 将算法封装在抽象基类中,在子类中实现细节。利用面向对象中的多态实现算法实现细节和高层接口的松耦合。
- 【Java】String的首尾去空和判空
- [java 基础]反射入门
- 关于powermock报错org.powermock.reflect.exceptions.FieldNotFoundException: Field &#39;fTestClass&#39; was not found in class org.junit.internal.runners.MethodValidator.问题解决
- 解决上一篇bean.xml中<;bean>;标签报错“ Error while downloading &#39;http://www.springframework.org/schema/beans/spring-beans.xsd........”
- vue组件定义方式,vue父子组件间的传值
- Linux less grep
- Pycharm新手使用教程(详解)