44.1、什么时web框架:
1、框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用看框架可以
帮助你快速开发特定的形同,简单的说,就是你用别人搭建好的舞台来做表演。
2、对于所有的web应用,本质上就是一个socket服务端,用户的浏览器其实就是一个socket客户端。
3、最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件
中读取HTML,返回。如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析
HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花
个把月去读HTTP规范。正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文
档,因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用
Python编写Web业务。这个接口就是WSGI(Web服务器网关接口):Web Server Gateway Interface。
44.2、MVC和MTV模式:
1、MVC模式:
所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在
一起。模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用
模型和视图完成用户的请求。
2、MTV:
(1)Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上
有些许不同。
(2)Django的MTV分别代表:
1)Model(模型):负责业务对象与数据库的对象(ORM)。
2)Template(模版):负责如何把页面展示给用户。
3)View(视图):负责业务逻辑,并在适当的时候调用Model和Template,此外Django还有一个 url 分发器,它
的作用是将一个个 URL 的页面请求分发给不同的view处理,view再调用相应的 Model 和 Template。
44.3、django的流程和命令行工具:
1、django实现流程(windows环境):
(1)安装django时要保证如下环境变量(如下环境变量在安装python后就应该被添加的):
(2)安装django:
C:\WINDOWS\system32>pip3 install django==2.2.9
#我这里 django 装的是 2.2.9LTS 版本(长久支持版本),python 装的是 3.7.6 版本。
(3)创建project:
1)进入D盘:
C:\WINDOWS\system32>d:
2)创建mysite项目:
D:\>django-admin startproject mysite
#django-admin是Django的一个用于管理任务的命令行工具。
3)mysite项目的目录结构如下:
----mysite
--------mysite
------------__init__.py
------------settings.py
#配置文件,包含了项目的默认设置,包括数据库信息,调试标
#志以及其他一些工作的变量。
------------urls.py
#URL对应关系,负责把URL模式映射到应用程序。
------------wsgi.py
# 遵循WSIG规范,uwsgi + nginx
--------manage.py
#用于管理Django应用程序,是对django-admin的简单包装,
#每一个Django Project里都会有一个manage.py,通过它可以
#调用django shell和数据库等。
(4)在项目中创建Django应用程序:
1)进如mysite目录:
D:\>cd mysite
2)创建应用程序app01:
D:\mysite>python manage.py startapp app01
3)应用程序app01目录如下:
----app01
--------migrations
#数据修改表结构
------------_init_.py
--------_init_.py
--------admin.py
#Django为我们提供的后台管理
--------apps.py
#配置当前app
--------models.py
#ORM,写指定的类,通过命令可以创建数据库结构
--------tests.py
#单元测试
--------views.py
#业务代码
(5)settings文件配置:
1)添加创建的程序app01:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
2)在mysite项目下创建存放模板文件的"templates"目录和存放静态文件的"static"目录。
3)添加存放模板文件"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',
],
},
},
]
4)添加存放静态文件"static"目录的路径(静态文件指的是css、js、images文件):
STATIC_URL = '/static/'
#引用名,主要由项目内部模板文件调用。好处是:存放静态文件真实目录的更改
#不会影响前端的引入,避免造成前端大量修改。
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
#实际名,即实际文件夹的名字,static 文件夹写在 app01 下,静态文件的调用 os.path.join(BASE_DIR,'app01','static'),。
#注意:上面的配置必须在"os.path.join(BASE_DIR,'static')"后加",",代表元组分割,否则会报错。
#django 对引用名和实际名进行映射,引用时只能按照引用名来,不能按实际名去找。
#在模板中调用静态文件的方法有如下两种:
#第一种:<script type="text/javascript" src="/static/jquery-3.1.1.js"></script>
#第二种:
#{% load staticfiles %}
#放到head标签中
#<script type="text/javascript" src={% static "jquery-3.1.1.js" %}></script>
5)添加django启动时允许被访问的本地ip列表的配置:
ALLOWED_HOSTS = ['127.0.0.1']
#如果不配置默认是[],那么只有本地(127.0.0.1)能够访问django。
#"*"代表本地所有的ip地址,也可以根据需求写成"ALLOWED_HOSTS = ['192.168.0.212','127.0.0.1','192.168.2.212']"。
#如果启动django时绑定的ip地址不在"ALLOWED_HOSTS"配置列表中,则django无法被远程客户端访问。
(6)启动项目:
D:\mysite>python manage.py runserver 127.0.0.1:8080
说明:
python manage.py runserver
#以"127.0.0.1:8000"ip和端口启动django。
python manage.py runserver 8080
#以"127.0.0.1:8080"ip和端口启动django。
python manage.py runserver 192.168.0.212:8080
#以"192.168.0.212:8080"ip和端口启动django。
python manage.py runserver 0.0.0.0:8080
#以本地所有ip地址和8080端口启动django。
(7)在浏览器进行验证:
提示:在django启动后修改代码,django会自动重启。
(8)补充:
1)以上创建django项目及应用程序的过程需要使用命令,代码书写也比较麻烦,我们可以使用pycharm来创建django项目及项目
中的应用程序,可以有效的提高开发的效率。
2)在pycharm中配置Django项目:
A、创建Django项目:
B、按上面的"(5)settings文件配置:"步骤对settings文件进行配置。
C、项目选择、启动、及设置按钮:
D、设置项目的启动的ip及端口号:
2、django的命令行工具:
(1)在终端任意目录下运行:
1)查询某个命令的详细信息:
django-admin help startapp
(2)在项目的目录下运行:
1)启动交互界面:
python manage.py shell
#这个命令和直接运行 python 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,
#对于操作数据,还有一些小测试非常方便。
2)终端上输入python manage.py 可以看到详细的列表,在忘记子名称的时候特别有用。
3)同步数据库:
python manage.py makemigrations
#生成同步数据库的脚本
python manage.py migrate
#同步数据库
注意:在开发过程中,数据库同步误操作之后,难免会遇到后面不能同步成功的情况,解决这个问题的一个简单粗暴
方法是把migrations目录下的脚本,除 __init__.py 之外全部删掉,再把数据库删掉之后创建一个新的数据库,数据
库同步操作再重新做一遍。
使用python manage.py migrate生成的表删除后无法进行生成了,除非删除库后重建。
4)刷新数据库,默认为"默认的数据库":
python manage.py flush --database <databasename>
5)创建超级管理员:
python manage.py createsuperuser
说明:密码最少8位字符,其中字母最少两位且错开。
admin 是 Django 自带的一个后台数据库管理系统,访问 http://127.0.0.1:8080/admin/ 如下如图所示:
6)修改用户密码:
python manage.py changepassword <username>
7)导出数据:
python manage.py dumpdata [appname]|[appname.表名称] > [自定义名称].json
#导出的结果在项目下,文件名相同会自动覆盖。
#[appname]:表示导出指定应用程序所有表中的数据。
#[appname.表名称]:表示导出指定应用程序指定表中的数据。
8)导入数据:
python manage.py loaddata <自定义名称>.json
#前提是应用程序中的表必须存在,相同的记录覆盖,没有的记录增加,已存在的记录不变。
#总结就是还原备份的数据,不改变新增的数据。
9)数据库命令行:
python manage.py dbshell
标签:manage,djanjo,工程,python,44,py,django,Django,数据库 From: https://blog.51cto.com/u_11409186/5743151