MVC和MTV框架
MVC
MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示:
MTV
Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:
- M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
- T 代表模板 (Template):负责如何把页面展示给用户(html)。
- V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:
一般是用户通过浏览器向服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。
Django配置
下载Django
1 | pip install django = = 4.2 |
创建一个Django项目
1 | django - admin startproject 项目名 |
需要在指定目录下创建
由于Django是基于MTV框架,所以在项目目录下还需要创建templates文件夹存放HTML模板
应用(app)的创建和配置
1 | python manage.py startapp app名 |
在项目目录下创建应用,创建完成之后需要在项目文件夹下的 settings.py 配置文件中配置app
1 2 3 4 5 6 7 8 9 10 | INSTALLED_APPS = [ 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , # 'app01.apps.App01Config', 'app01' , # 需要手动添加app,两种方式都可以,有多少应用添加多少应用 ] |
模板(templates)的创建和配置
在项目目录下创建 templates 文件夹,用来存放 HTML 页面和 模板,创建完成之后,需要在settings.py 配置文件中配置 templates
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import os # 引入os模块 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' , ], }, }, ] |
静态文件配置
1.项目目录下创建一个文件夹,例如名为 jingtaiwenjianjia ,将所有静态文件放到这个文件夹中
2.settings.py 配置文件中进行下面的配置
1 2 3 4 5 6 | import os # 静态文件相关配置 STATIC_URL = 'static/' # 静态文件路径别名(映射),可修改 STATICFILES_DIRS = [ # 必须是这个 STATICFILES_DIRS 名字 os.path.join(BASE_DIR, 'jingtaiwenjianjia' ) ] |
数据库配置(连接mysql)
Django 在项目 settings.py 配置文件中默认配置 sqlite3 数据库
连接 mysql 需要重新在 settings.py 文件中配置(将原有配置注释或删除),配置如下
1 2 3 4 5 6 7 8 9 10 | DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.mysql' , 'NAME' : ' ' , # 要连接的数据库的库名,连接前需要创建好 'USER' : 'root' , # 连接数据库的用户名 'PASSWORD' :'', # 连接数据库的密码 'HOST' : '127.0.0.1' , # 连接主机,默认本机 'PORT' : 3306 , # 端口 默认 3306 } } |
在项目文件夹下的 init.py 文件的配置如下:
1 2 3 4 5 6 | # 在 __init__.py 文件下引入 import pymysql # django4.2以上需要引入这句话,不然会报错如下错误(我猜测是高版本不兼容的问题) # raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.3 or newer is required; you have 1.0.3. pymysql.version_info = ( 1 , 4 , 3 , "final" , 0 ) # 1.4.3 代表mysqlclient版本号 pymysql.install_as_MySQLdb() |
配置完成之后就是创建数据库中的数据了!
数据库同步指令
1 2 | python manage.py makemigrations # 同步数据库中的类 python manage.py migrate # 执行数据库并创造类 |
数据库可视插件及Django所需插件
SQLite , SQLite3 Editor , MySQL Syntax , MySQL , Django
启动Django项目
1 | python manage.py runserver 127.0 . 0.1 : 8000 # ip地址和端口号不写,默认本机8000端口 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)