内容简介:摘要:日常学习中对一些知识点进行总结得出该系列文章。学习笔记内容包括前端技术,Django web开发技术,数据库技术如MySQL,MongoDB,PGSQL等等。此外还有一些工具如Dock,ES等等。(本文原创,转载必须注明出处.)MVC的核心思想就是解耦。
摘要:日常学习中对一些知识点进行总结得出该系列文章。学习笔记内容包括前端技术,Django web开发技术,数据库技术如MySQL,MongoDB,PGSQL等等。此外还有一些 工具 如Dock,ES等等。(本文原创,转载必须注明出处.)
MVC的核心思想就是解耦。
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
ORM框架
ORM模型类生产表
- 1 设计testbook app中的model.py
- 2 生成迁移文件
- 3 执行迁移生成表
sqlite3是一个小型数据库,经常使用在手机登移动端
- 通过模型操作数据表。操作 sqlite 3
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()
模型M
- 模型与模型关系
生成迁移文件
生成迁移表
- Django操作后台管理
(1)本地化语言与时间
(2)创建管理员
(3)启动服务器
(4)浏览器访问
(5)注册模型类
(6)列表文本显示
(7)自定义管理页面
视图V
- 视图使用:当视图与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
Template模板
(1)根项目下创建模板templates文件夹
(2)配置模板目录
- 项目绝对路径,查看即可
- 设置目录文件路径
- 配置模板文件,每个app下创建一个模板文件名如booktest
这里面的模板文件为html,而模板中不仅仅为html。其中支持变量,变量使用两个花括号,;里面是view.py中设置的字典键名。
- 模板中的遍历
(3)使用模板文件
-
模板渲染:产生标准的html
-
封装以上步骤
注意:使用模板文件中需要以上四个步骤,对以上四步进行封装为my_render遍历高效执行。幸运的是django已经帮我们封装好了这个方法为render。其中第一个参数为request,第二个是模板路径,第三个参数是变量字典,没有变量则为空
- 显示结果
MVT综合案例
(1)启动项目解决端口号占用,指定端口号
(2)案例介绍
(3)视图编写,先导入模型model类,查找 MongoDB 数据库的表信息
(4)配置url,记得配置主项目下的urls.py,这个文件一次配置多次使用
(5)创建模板文件
(6)显示图书信息,主页信息
(7) 在视图里面编写图书管理的详细信息
(8) 设置URL地址以及传参
Django在页面间传参的原理是,在页面url配置时候通过括号里面的组进行传参,后面视图会自动解析组内容进行参数填充。多个参数多个组
(8)创建子页面信息
Django使用MySQL
(1)创建新的项目:django-admin startproject tets2
(2) 创建app: django-admin startapp booktest
(3) setting.py中的INSTALLED_APPS注册应用booktest
(4) setting.py中的DATABASES中配置数据库
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
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
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
from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('booktest/', include('booktest.urls') ) ]
booktest的urls
from django.urls import path,include from booktest import views urlpatterns = [ path('',views.index,name='index') ]
重定向
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改变影响模型类,然后重新做下迁移
模型类对应的表名不依赖于应用的名字
【 机器学习和自然语言QQ群:436303759 】 :
机器学习和自然语言(QQ群号:436303759)是一个研究深度学习、机器学习、自然语言处理、数据挖掘、图像处理、目标检测、数据科学等AI相关领域的技术群。其宗旨是纯粹的AI技术圈子、绿色的交流环境。本群禁止有违背法律法规和道德的言谈举止。群成员备注格式:城市-自命名。微信订阅号:datathinks
以上所述就是小编给大家介绍的《笔记11:Django入门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Zen of CSS Design
Dave Shea、Molly E. Holzschlag / Peachpit Press / 2005-2-27 / USD 44.99
Proving once and for all that standards-compliant design does not equal dull design, this inspiring tome uses examples from the landmark CSS Zen Garden site as the foundation for discussions on how to......一起来看看 《The Zen of CSS Design》 这本书的介绍吧!