内容简介:摘要:日常学习中对一些知识点进行总结得出该系列文章。学习笔记内容包括前端技术,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入门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。