一.框架
框架是应答某类软件设计问题而产生的,它是由各个软件模块组成的,每个模块都有特定的性能,模块与模块之间通过相互配合来实现软件的开发。
二. MVC 框架
MVC简介
- MVC的理念: 分工,让专门的人去做专门的事。
- MVC的核心思想: 解耦。
Web MVC框架模块性能
- M:Model, 和数据库进行交互。
- V:View, 产生html页面。
- C:Controller, 用于接管、解决申请,与M和V进行交互,返回应答。
如下图所示
三.Django框架
3.1Django简介
Django ,遵循MVC思维,然而有本人的一个名词,叫做MVT。
3.2Django中的MVT
- M:Model,模型, 和MVC中M性能雷同,同样是和数据库进行交互。
- V:View,视图, 相当于MVC中C,接管、解决申请,与M和T进行交互,返回应答。
- T:Template,模板, 和MVC中V性能雷同。
如下图所示 假设baidu为Django开发
3.3Django装置
pip install django// 指定版本 装置pip install django==2.2.2
3.4第一个Django我的项目
- 建设我的项目
django-admin startproject mysite
- 我的项目目录
.├── manage.py // django我的项目的管理文件└── mysite ├── __init__.py //__init__.py: 阐明是一个python包。 ├── settings.py //配置文件 ├── urls.py //url路由配置 └── wsgi.py // web服务器和Django交互的接口
- 创立Django利用(app)
cd mysite //进入django我的项目中python manage.py startapp testapp // testapp 为App的名字// 也能够应用django-admin startapp testapp
3.5配置文件 settings
- 注册利用
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',# 'testapp', 晚期版本应用 'testapp.apps.TestappConfig', # 2.0以上版本应用 ]
- 配置时区和语言环境
LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'
- 配置templates 目录
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', ], }, },]
- 配置static
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)
- 数据库配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }}
3.6 视图
在Django中,通过浏览器去申请一个页面时,应用视图函数来解决这个申请的,视图函数解决之后,要给浏览器返回页面内容。
视图函数
- 定义视图函数
视图函数在views.py中定义。
"""视图函数必须有一个参数request,进行解决之后,须要返回一个HttpResponse的类对象。hello world就是返回给浏览器显示的内容。"""def index(request): // request参数必须 return HttpResponse('hello world')
3.7 url路由
url配置的目标是让建设url和视图函数的对应关系。url配置项定义在urlpatterns的列表中,每一个配置项都调用url函数。
url函数有两个参数,第一个参数是一个正则表达式,第二个是对应的解决动作。
1.X版本配置url时,有两种语法格局:
a) url(正则表达式,视图函数名)
b) url(正则表达式,include(利用中的urls文件))
from django.conf.urls import urlfrom django.contrib import adminfrom testapp import viewsurlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', views.index), ]
2.x版本应用path更不便
from django.contrib import adminfrom django.urls import pathfrom testapp import viewsurlpatterns = [ path('admin/', admin.site.urls), path('index', views.index, name="index" ),]
正式开发中,在配置url时,首先在我的项目的urls.py文件中增加配置项时,并不写具体的url和视图函数之间的对应关系,而是蕴含具体利用的urls.py文件,在利用的urls.py文件中写url和视图函数的对应关系。
以2.2.2版本演示 我的项目urls
from django.contrib import adminfrom django.urls import path, includeurlpatterns = [ path('admin/', admin.site.urls), path('', include('testapp.urls') ),]
app中urls
from django.urls import pathfrom testapp import viewsurlpatterns = [ path("index", iviews.index, name='index' ),]
url和view配置过程
- 1)在我的项目的urls文件中蕴含具体利用的urls文件,在具体利用的urls文件中蕴含具体url和视图的对应关系。
- 2)url配置项是定义在一个名叫urlpatterns的列表中,其中的每一个元素就是一个配置项,每一个配置项都调用url函数。
3.8 Model
django中内嵌了ORM框架,ORM框架能够将类和数据表进行对应起来,只须要通过类和对象就能够对数据表进行操作。
在Django中次要是设计类:模型类。
ORM另外一个作用:依据设计的类生成数据库中的表。
在利用models.py中设计模型类。
示例
class UserInfo(models.Model): username = models.CharField(max_length=24) age = models.IntegerField() gender = models.BooleanField() email = models.EmailField()
生成迁徙文件
python manage.py makemigrations
执行迁徙文件生成数据表
python mange.py migrate//生成表名的默认格局:利用名_模型类名小写
根底操作
- 减少一条数据
第一种形式
user1 = model.UserInfo() # 创立一个对象 user1.username = '张三' user1.age = 18 user1.gender = False user1.email = 'zhangsan@test.com' user.save() //执行save后,会保留数据到数据表中
第二种形式
user1 = models.UserInfo.objects.create(username='张三', age=18, gender=False, email='zhangsan@test.com')
- 查问id为1的用户信息
user1 = models.UserInfo.get(id=1)
- 批改id为1的用户的email
user1 = models.UserInfo.get(id=1)user1.email = 'zhangsan@abc.com'user1.save()
- 删除id为1的用户
user1 = models.UserInfo.get(id=1)user1.delete()
- 查问所有用户信息
models.UserInfo.objects.all()