Backend - Django 项目框架浅析

目录

一、项目整体框架

二、myProject 文件夹

(一)settings.py 作用

1. 链接数据库

2. BASE_DIR

3. DEBUG

4. 注册应用app

5. 中间件middleware

6. 模板templates

7. 后台 admin 管理

8. 多语言

9. 静态文件路径前缀

10. SASS 样式文件设定

11. 主键的默认类型

 (二)urls.py 作用

三、myApp 文件夹

(一)apps.py 作用

(二)urls 文件夹

(三)views 文件夹

(四)templates 文件夹

1. base.html

2. 模板文件

(五)models 文件夹

(六)migrations 文件夹

(七)static 文件夹

四、manage.py

五、.vscode 文件夹

六、环境搭建 & 项目创建


一、项目整体框架

Django采用的是MTV的架构。即,

        Model(模型):数据库对象(数据来源)。

        Template(模板):用户看到的画面(动画、输入框等)。

        View(视图):业务处理(前端的数据存储在数据库;查询的数据返回给前端)。

        urls分发器(路由):连接前后端。

        三个模块与路由的关系:浏览器输入url路由,初始化界面时(刷新),经过url分发器,view的get()方法处理,操作model,数据传给template;前端提交数据时,通过ajax设定的url,匹配该url分发器对应的view处理,操作model。

如下图,该项目有三个文件夹(.vscode、myApp、myProject)和一个执行py文档(manage.py)

说明:.vscode文件夹主要针对vscode软件的使用。 

接下来几节内容,将详细的讲解图中这几个模块。  

二、myProject 文件夹

主要针对 settings.py 和 urls.py 这两个重要模块讲解。

(一)settings.py 作用

settings.py 主要针对项目的基础配置。一旦建立好里面的内容,后面大概率是不会更新修改。

1. 链接数据库

        以链接postgreSQL数据库为例。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'PORT': '5432',
        'NAME': 'MyDB',
        'USER': 'postgres',
        'PASSWORD': 'admin',
        'HOST': 'XX.XXX.X.X',
    },
}

postgreSQL数据库的常用操作软件是PgAdmin,可参考另一篇文章:Backend - PgAdmin(PostgreSQL 工具)-CSDN博客 

2. BASE_DIR

设置项目文件夹所在的绝对位置。

BASE_DIR = Path(__file__).resolve().parent.parent

3. DEBUG

(1)开发/测试环境

# 允许debug
DEBUG = True
# 设置可请求访问的 IP
ALLOWED_HOSTS = []  # 可以默认为空。或 = ['127.0.0.1', 'localhost']

(2)生产环境

# 禁止 debug
DEBUG = False
# 设置可请求访问的 IP
ALLOWED_HOSTS = ['*']  # 允许所有 IP 地址

4. 注册应用app

INSTALLED_APPS = [
    # 创建项目时,即存在
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 开发时,添加应用
    'admin_reorder',  # Django Admin 后台管理
    'myApp',  # Django application 项目应用
]

5. 中间件middleware

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',  # 开启网络安全保护
    'django.contrib.sessions.middleware.SessionMiddleware',  # 开启session缓存,缓存请求和响应数据,以提高性能和减少响应时间
    'django.middleware.common.CommonMiddleware',  # 通用中间件,可自动为URL路由添加www前缀和斜杠后缀
    'django.middleware.locale.LocaleMiddleware',  # 开启多语言
    'django.middleware.csrf.CsrfViewMiddleware',  # 开启跨域请求伪造的安全防御
    'django.contrib.auth.middleware.AuthenticationMiddleware',  # 验证用户身份(request.user)、授予或拒绝访问权限
    'django.contrib.messages.middleware.MessageMiddleware',  # 消息中间件,开启cookie或会话的消息
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

可参考另一篇文章:Backend - Django Middleware 中间件-CSDN博客 

6. 模板templates

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',  # 模板的引擎
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 模板文件所在目录 BASE_DIR/templates
        'APP_DIRS': True,  # 是否在应用App中的templates目录里查找模板
        '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',
                'django.template.context_processors.i18n',  # 多语言(i18n上下文渲染器)
            ],
        },
    },
]

7. 后台 admin 管理

ADMIN_REORDER = (
    {'app': 'auth',
     'label': _('Auth Part'),
     'models': ('auth.User', 'auth.Group',),
    },
    {'app': 'myApp',
     'label': _('Book Part'),
     'models': ('myApp.BookType',),
    },
)

 可参考另一篇文章:Backend - Django Admin 后台管理_django admin orderby-CSDN博客

8. 多语言

可参考另一篇文章:Backend - Django 多语言-CSDN博客 

9. 静态文件路径前缀

STATIC_URL = 'static/'

10. SASS 样式文件设定

使用SASS文件,参考另一篇文章: Frontend - SASS / SCSS 文件使用-CSDN博客

11. 主键的默认类型

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

 (二)urls.py 作用

urls.py 主要针对views视图文件、多语言文件等路由的配置。

注意:为了方便项目管理,可以在myApp目录下创建urls文件夹,放置不同功能的url。

# 1. myProject/urls.py文件
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myApp/', include('myApp.urls.book_url')),  # myApp文件夹下创建一个urls文件夹,放置所有url文件
]


# 2. myApp/urls文件夹下
# (1) 创建__init__.py 文件
# (2) 创建book_url.py文件, 内容如下:
from django.urls import path
from myApp.views import views_book
from django.contrib.auth.decorators import login_required

urlpatterns = [
    path('url_book_create/', login_required(views_book.BookCreate.as_view()), name='url_book_create'),  # book create
]

三、myApp 文件夹

主要包括 urls 路由文件、views 视图文件、templates 模板文件、models 数据库模型文件、migrations 迁移文件、static 静态文件。如图,左边是创建Django项目时自动创建的文件(蓝色方框),右边是整理后的文件(黄色方框)。

(一)apps.py 作用

配置该应用的基础信息。

# myApp/app.py
from django.apps import AppConfig
class MyappConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'myApp'

同时,settings.py里要注册该APP。

# myProject/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myApp',  # 注册项目APP
]

(二)urls 文件夹

手动创建的新文件夹。用于统一存放 urls 路由文件。

注意:需要新增一个__init__.py 初始化文件(空文件,无需开发内容,但必须存在该文件)。

myApp/urls文件夹下
# (1) 创建__init__.py 文件
# (2) 创建book_url.py文件, 内容如下:
from django.urls import path
from myApp.views import views_book
from django.contrib.auth.decorators import login_required

urlpatterns = [
    path('url_book_create/', login_required(views_book.BookCreate.as_view()), name='url_book_create'),  # Book create
]

还需要在myProject目录下的 urls.py 文件引入(该篇文章前面的第二节中有讲过)。 

(三)views 文件夹

手动创建的新文件夹。用于统一存放 views 视图文件。

注意:需要新增一个__init__.py 初始化文件(空文件,无需开发内容,但必须存在该文件)。

# myApp/views/views_book.py
from django.views import View
from django.shortcuts import render

class BookCreate(View):
    def get(self, request):
        return render(request, 'book/book_create.html', {})
    def post(self, request):
        pass

# myApp/urls/book_url.py文件
urlpatterns = [
    path('url_book_create/', login_required(views_book.BookCreate.as_view()), name='url_book_create'),  # book create
]

(四)templates 文件夹

手动创建的新文件夹。用于统一存放 templates 模板文件。

1. base.html

{% load static %}
<!--<!DOCTYPE html>-->
<html lang="en">
<meta charset="utf-8"/>
<head>
    <title>Test</title>  <!--网页的标题-->
    <link rel="shortcut icon" href="{% static 'images/favicon.ico' %}"/>  <!--网页的小图标,若不引入图片,也不影响项目运行-->
    <link rel="stylesheet" type="text/css" href="{% static 'css/bootstrap.css' %}"/>
    <link rel="stylesheet" type="text/css" href="{% static 'css/bootstrap.min.css' %}"/>
    <link rel="stylesheet" type="text/css" href="{% static 'css/jquery.dataTables.min.css' %}"/>
    <link rel="stylesheet" type="text/css" href="{% static 'css/base.css' %}"/>  <!--自定义的base.css文件-->

    <script type="text/javascript" src="{% static 'js/jquery-3.1.1.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/bootstrap.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/jquery.dataTables.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/dataTables.bootstrap.min.js' %}"></script>
</head>

<body id="body">
    <div>{% block content %} {% endblock %}</div>  <!--用于放置不同的html模板文件-->
</body>

<script>
</script>

</html>

2. 模板文件

{% extends "base.html" %}  <!--继承base.html-->
{% load static %}
{% block content %}  <!--对应base.html的body内容部分start-->
<div id="main">
    <div><h1>Book</h1></div>
    <div>去有风的地方,遇见你~~<div>
</div>
<script type="text/javascript">
 <!--用于设置本页面的动态操作-->
</script>
{% endblock %}  <!--对应base.html的body内容部分end-->

(五)models 文件夹

手动创建的新文件夹。用于统一存放 models 数据库模型文件。 

注意:需要新增一个__init__.py 初始化文件(空文件,无需开发内容,但必须存在该文件)。

可参考另一篇文章:Backend - Django Model-CSDN博客 

(六)migrations 文件夹

创建项目时自动创建的文件夹。用于统一存放 migrations 迁移文件(每次执行迁移命令时,就会自动生成一个新的迁移文件,所有迁移文件得保留,不要删除,否则会影响下次的迁移) 。

(七)static 文件夹

手动创建的新文件夹。用于统一存放 css、js、images等静态文件。

四、manage.py

作用:启动程式;迁移数据库等

如,执行启动程式命令:

python manage.py runserver

迁移数据库命令:

# 生成迁移文件
python manage.py makemigrations

# 执行迁移
python manage.py migrate

五、.vscode 文件夹

具体介绍,可参考另一篇文章:VSCode & PyCharm-CSDN博客

六、环境搭建 & 项目创建

参考另一篇文章:虚拟环境配置(python 安装、Django等依赖安装、创建&运行Django等)_python虚拟环境安装库-CSDN博客

  • 14
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值