系统架构
Django
Django是一个开源的Python Web框架,用于快速构建高效、可扩展的Web应用程序。它遵循了MVC(模型-视图-控制器)的设计模式,提供了一套强大的工具和功能,使开发人员能够轻松地创建复杂的Web应用。
MTV模式:
Django的MTV模型本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些不同
- M代表模型(Module):负责业务对象和数据库的关系映射(ORM)
- T代表模板(Template):负责如何把页面展示给用户(html)
- V代表视图(View):负责业务逻辑,并在适当时候调用Module和Template
除了以上三层之外,还需要一个URL分发器,它的作用是将一个URL的页面请求分发给不同的View处理,View再调相应的Module和Template
MTV响应模式:
- Web服务器(中间件)收到一个http请求
- Django在URLconf里查找对应的视图(View)函数来处理http请求
- 视图函数调用相应的数据模型来存取数据,调用相应的模板向用户展示页面
- 视图函数处理结束后返回一个http的响应给Web服务器
- Web服务器将响应发送给客户端
- MTV模型图解
创建Django项目
Django可以自动生成一些代码,这些代码创建一个Django项目:一个Django实例的设置集合,包括数据库的配置,Django有关的选项和应用有关的选项
- 新建项目
- 项目目录结构,项目目录都由软件创建完成
项目文件说明:
- 外层的yfidmgrdev/根目录仅仅是项目的一个容器。它的名字与Django无关,可以将其重命名为任何内容
- managa.py:一个命令行管理工具,可以使用多种方式对Django项目进行交互。可以在django-admin和managa.py中读取到关于managa.py的所有细节
- 内层的yfidmgrdev/目录是项目的真正的Python包。它是导入任何东西时需要使用的Python包的名字
- yfidmgrdev/init.py:一个空文件,它告诉Python这个目录应该被看作一个Python包
- yfidmgrdev/settings.py:改Django项目的设置/配置,Django settings将告诉你应该怎么设置
- yfidmgrdev/urls.py:此Django项目的URL声明,Django驱动的网站的目录
- yfidmgrdev/wsgi.py:用于项目与WSGI兼容的Web服务器入口
- yfidmgr目录是应用名称,包含视图函数(views.py)和数据库模型(models.py)
修改参数
- Django默认只允许本机访问,英文环境,这些均可在settings.py中进行修改
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "yfidmgrdev",
"USER": "yfidmgr",
"PASSWORD": "123456",
"HOST": "127.0.0.1",
"PORT": "3306",
}
}
ALLOWED_HOSTS = ['*']
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = False
- 导入pymysql,如果没有安装需要先使用pip insall pymysql安装
# yfidmgrdev/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
- 生成数据库
Django生成的项目,使用了很多预先编写好的应用,这些应用需要用到数据
只要执行以下语句,即可自动生成数据库
在代码中有数据库定义改变时,需要执行以下两条语句
(venv) PS D:\pycode\yfidmgrdev> python manage.py makemigrations
No changes detected
(venv) PS D:\pycode\yfidmgrdev> python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
...
- 创建管理员账户:
访问后台需要有超级用户身份
超级用户需要单独创建爱你
用户将写到数据库中
(venv) PS D:\pycode\yfidmgrdev> python manage.py createsuperuser
用户名 (leave blank to use 'administrator'): ayyq
电子邮件地址:
Password:
Password (again):
密码长度太短。密码必须包含至少 8 个字符。
这个密码太常见了。
密码只包含数字。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
- 启动服务
Django自带一个开发服务器,默认运行于8000端口,可以更换
该开发服务器不要用于生产环境下
启动命令:python.exe .\manage.py runserver 0.0.0.0:8888
配置应用
在初始化项目时已经创建了一个名叫yfidmgr的应用,也可以手动创建或添加应用
(venv) PS D:\pycode\yfidmgrdev> python .\manage.py startapp yfidmgr
创建应用后,需要将其安装到项目中,否则应用不会生效
# 在settings.py中进行修改
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'yfidmgr',
]
- 配置URLconf:
为了整洁起见,与yfidmgr相关的url都交给yfidmgr应用记性路由
修改yfidmgrdev/urls.py如下
from django.urls import path, include
urlpatterns = [
# admin在后续开发中已经没有作用,可注释
# path('admin/', admin.site.urls),
path('yfidmgr/', include('yfidmgr.urls')),
]
- 创建路由:
创建yfidmgr应用的URLFconf,配置访问yfidmgr应用首页的视图
创建yfidmgr/urls.py,内容如下
from yfidmgr import views
from django.urls import path, re_path, include
urlpatterns = [
path('', views.index, name='index'),
]
- 视图函数
# yfidmgr/views.py
from django.http import HttpResponse
def index(reauest):
return HttpResponse("这是权限管理系统的首页")
- 启动服务验证
GZH
- 欢迎关注同名GZH"小红帽rh",获取更多最新分享。