笔记5:Django知识一
Django
1 MVC
MVC的核心思想就是解耦。

2 Django介绍
2.1 MVT
Django遵循MVC思想,其称为MVT。其中:
- M: Model模型:和MVC中的M相同和数据库交互
- V:View视图,和MVC中的C相同,接收请求并处理,与M和T交互,返回应答
- T:Template模板,和MVC中的V功能相同,产生HTML

解决python安装包依赖问题
- 安装:pip install -i https://pypi.douban.com/simple django

在虚拟环境里面配置,减少依赖。
Django项目创建

- 项目结构

- 创建应用 C:\Users\admin\Desktop\bncDome\test1>django-admin startapp booktest


- 启动服务器

- 添加app

2.2 ORM框架

ORM模型类生产表
- 1 设计testbook app中的model.py

- 2 生成迁移文件


- 3 执行迁移生成表


sqlite3是一个小型数据库,经常使用在手机登移动端
- 通过模型操作数据表。操作sqlite3
xxxxxxxxxx
C:\Users\admin>cd Desktop\bncDome\test1
C:\Users\admin\Desktop\bncDome\test1>python manage.py shell
In [3]: from booktest.models import BookInfo
In [6]: from datetime import date
In [4]: b=BookInfo()
# 插入
In [5]: b.btitle = '天龙八部'
In [9]: b.bpub_date = date(1990,1,1)
In [10]: b.save()
# 查找
In [14]: b2=BookInfo.objects.get(id=1)
In [15]: type(b2)
Out[15]: booktest.models.BookInfo
In [16]: b2.btitle
Out[16]: '天龙八部'
# 更新
In [17]: b2.btitle ='笑傲江湖'
In [18]: b2.save()
In [19]: b2.btitle
Out[19]: '笑傲江湖'
#删除
In [23]: b2.delete()
2.3 模型M:数据库交互
- 模型与模型关系

生成迁移文件

生成迁移表




- Django操作后台管理
(1)本地化语言与时间

(2)创建管理员

(3)启动服务器

(4)浏览器访问

(5)注册模型类




(6)列表文本显示


(7)自定义管理页面


2.4 视图V:V与M或者T交互
- 视图使用:当视图与T交互时候,首先浏览器地址中127.0.0.1\index。找到项目第三步中的url中的urlpatterns中查找,\与^ 一样,逐渐往下匹配。找到booktest.urls。然后跳到app中的booktest中的urls(第二步)继续匹配。对应的是一个视图views.index,就会跳到视图views.py匹配,即第一步
(1)编写view代码,定义视图函数,返回浏览器的内容

(2)创建urls.py:配置url路由,注意严格匹配开头结尾。地址视图都在这里直接匹配



(3) 项目的url文件配置,包含对应的app中的视图

ur与视图匹配过程
l
2.5 T:Template模板
(1)根项目下创建模板templates文件夹

(2)配置模板目录
- 项目绝对路径,查看即可

- 设置目录文件路径

- 配置模板文件,每个app下创建一个模板文件名如booktest

这里面的模板文件为html,而模板中不仅仅为html。其中支持变量,变量使用两个花括号,;里面是view.py中设置的字典键名。
- 模板中的遍历

(3)使用模板文件

- 模板渲染:产生标准的html

- 封装以上步骤

注意:使用模板文件中需要以上四个步骤,对以上四步进行封装为my_render遍历高效执行。幸运的是django已经帮我们封装好了这个方法为render。其中第一个参数为request,第二个是模板路径,第三个参数是变量字典,没有变量则为空



- 显示结果

2.6 MVT综合案例
(1)启动项目解决端口号占用,指定端口号

(2)案例介绍


(3)视图编写,先导入模型model类,查找MongoDB数据库的表信息


(4)配置url,记得配置主项目下的urls.py,这个文件一次配置多次使用

(5)创建模板文件

(6)显示图书信息,主页信息

(7) 在视图里面编写图书管理的详细信息


(8) 设置URL地址以及传参

Django在页面间传参的原理是,在页面url配置时候通过括号里面的组进行传参,后面视图会自动解析组内容进行参数填充。多个参数多个组
(8)创建子页面信息

2.7 Django使用MySQL
(1)创建新的项目:django-admin startproject tets2
(2) 创建app: django-admin startapp booktest
(3) setting.py中的INSTALLED_APPS注册应用booktest
(4) setting.py中的DATABASES中配置数据库
xxxxxxxxxx
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME':'bj18',
'USER':'root',
'PASSWORD':'admin',
'HOST':'127.0.0.1',
'PORT':3306,
}
}
(5) 预先安装pip install pymysql,之后在test2中需要加两句话:


(6) 根目录下启动服务: python manage.py runserver
(7) 迁移表:python manage.py makemigrations
(8) mysql数据库同步表:python manage.py migrate

(9) 编写views
xxxxxxxxxx
from django.shortcuts import render
from booktest.models import BookInfo
# Create your views here.
def index(request):
# 1 查询所有信息
books = BookInfo.objects.all()
# 2 使用模板
return render(request,'booktest/index.html',{'books':books})
(10) 设置模板目录DIRS
xxxxxxxxxx
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
(11) 在templates下新建booktest文件夹,然后创建html
(12) 配置urls
xxxxxxxxxx
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('booktest/', include('booktest.urls') )
]
booktest的urls
xxxxxxxxxx
from django.urls import path,include
from booktest import views
urlpatterns = [
path('',views.index,name='index')
]
重定向
xxxxxxxxxx
from django.shortcuts import render,redirect
def create(request):
b = BookInfo()
b.btitle = '流星蝴蝶剑'
b.bpub_date= datetime.date(1990,1,1)
b.save()
# return HttpResponse('ok')
return redirect('index')
(13)mysql日志文件

(14)模型-模型关系:1:1,1:多,多:多

两个类之间有多对多的关系,ManyToManyField定义在哪个类里面都可以

(15)模型-关联查询


(16)管理器对象




(17)元选项:不会因为app改变影响模型类,然后重新做下迁移

模型类对应的表名不依赖于应用的名字
笔记5:Django知识一的更多相关文章
- Python 学习第十九天 django知识
一,django 知识总结 1,同一个name属性的标签,多个值获取 <form action="/login/" method="POST" encty ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- Python学习---django知识补充之CBV
Django知识补充之CBV Django: url --> def函数 FBV[function based view] 用函数和URL进行匹配 url --> ...
- 【笔记】Django的视图
[笔记]Django的视图 Python Django Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应 ...
- Django 知识补漏单例模式
Django 知识补漏单例模式 单例模式:(说白了就是)创建一个类的实例.在 Python 中,我们可以用多种方法来实现单例模式: 1.文件导入的形式(常用) s1.py class Foo(obje ...
- 【笔记】Django的ORM之多对多表的增和删
[笔记]Django的ORM之多对多表的增和删 Django ORM 多对多 一 昨日补充:外键关联 外键在ORM中的关联方式: 与数据表相关的类都放到models.py文件中 class Book ...
- 【笔记】Django的ORM之删和改
[笔记]Django的ORM之删和改 Django ORM 数据库 一 删除操作 1.视图层 <table border="1"> <thead> < ...
随机推荐
- mongodb数据库的存储问题
MongoDB在Windows中默认的数据库目录是c:\data.如果在没有该目录的情况下,直接运行mongod.exe,就会报如下错误(并没有把mongodb设置为服务,所以通过命令行的形式启动,注 ...
- python27期python连接数据库:
import pymysql创建connectinon对象:con = pymysql.connect(host = "localhost",user = "root&q ...
- 《HBase在滴滴出行的应用场景和最佳实践》
HBase在滴滴出行的应用场景和最佳实践 背景 对接业务类型 HBase是建立在Hadoop生态之上的Database,源生对离线任务支持友好,又因为LSM树是一个优秀的高吞吐数据库结构,所以同时 ...
- 剑指Offer-2.替换空格(C++/Java)
题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 题意明确,就是将一个字符 ...
- Ubuntu16.04 UltraEdit 安装&破解&使用
(1)下载:登录到官网(http://www.ultraedit.com/downloads/uex.html)选在对应的版本进行下载. (2)安装: (使用命令行方式安装)在本地路径进行安装:sud ...
- Educational Codeforces Round 63 (Rated for Div. 2) E 带模高斯消元
https://codeforces.com/contest/1155/problem/E 题意 \(f(x)=a_0+a_1x+a_2x^2+...+a_kx^k,k \leq 10,0 \leq ...
- 记一次内存无法回收导致频繁fullgc机器假死的思路
确定挂机 络绎不绝的来不同类型的bug 当bug滚滚而来时,不要怀疑,你的发布的应用基本是不可用状态了.观察哨兵监控数据,特别是内存打到80%基本就挂机了,或者监控数据缺失也基本是挂机了.此时应当马上 ...
- Chrome教程之使用Chrome DevTools命令菜单运行命令
1.模拟移动设备 点击 Toggle Device Toolbar 2.限制网络流量和 CPU 占用率 要限制网络流量和 CPU 占用率,请从 Throttle 列表中选择 Mid-tier mobi ...
- 『珂朵莉树 Old Driver Tree』
珂朵莉树 珂朵莉树其实不是树,只是一个借助平衡树实现的数据结构,主要是对于有区间赋值的数据结构题,可以用很暴力的代码很高效地完成任务,当然这是建立在数据随机的基础上的. 即使数据不是随机的,写一个珂朵 ...
- 数据解析模块BeautifulSoup简单使用
一.准备环境: 1.准备测试页面test.html <html> <head> <title> The Dormouse's story </title> ...