linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
    • Python学习指南
  • 快速开始

    • Python: 输入与输出 (I/O)
    • Python: 异常处理 try-except
    • Python: List深入概述
    • Python: 面向对象编程(OOP)
  • Python 语法库函数

    • 语法库目录
    • 库

      • library目录
      • argparse:解析命令行参数
      • difflib:比较序列并生成差异信息
      • dnspython: DNS处理库
      • IPy:IP地址处理库
      • logging:记录和管理日志信息
      • os:访问和操作操作系统
      • psutil:系统性能信息库
      • re:正则表达式库
      • smtplib:邮件发送库
    • 函数

      • function目录
      • any() 函数
      • input 函数
      • lambda 和 map 函数
      • reversed()函数
      • zip()函数
    • 语句

      • statement目录
      • import 语句
      • Try/Exception 异常
    • 概念

      • concept目录
      • 深拷贝与浅拷贝
      • 列表、字典与元组
      • 文件读写
      • IO: 输入与输出
      • 逻辑判断与条件语句
      • OOP 面向对象:class
      • OOP: 面向对象编程
  • SQLAlchemy

    • 获取insert或者update的id
  • Pandas

    • Pandas目录
    • Pandas:基础操作
    • Pandas:数据处理与转换
    • Pandas: 数据写入 excel 表格
  • Python前端框架

    • Flask

      • 1. Flask简介
      • 2. Flask程序基本结构
      • 3. Flask请求-响应循环
      • 4. flask案例: 框架网页查询IP
      • Python: Flask中的GitHub OAuth
    • Django

      • chapter-01:Django框架认识

        • 1.1 Django的产生背景
        • 1.2 MTV设计模式
        • 1.3 Django 主要功能模块
      • chapter-02:开发环境配置

        • 2.1 Python的安装与配置
        • 2.2 虚拟环境安装与配置
        • 2.3 Django安装与配置
        • 2.4 MySQL安装配置
      • chapter-03:项目框架搭建

        • 3.1 Django管理工具-创建项目骨架
        • 3.2 修改项目的默认配置
        • 3.3 初始化项目环境
      • chapter-04:ORM应用与原理剖析

        • 4.1 构建POST应用需要的数据集
        • 4.2 Model相关的概念和使用方法
        • 4.3 Model的查询操作API
        • 4.4 ORM实现原理
      • chapter-05:Django管理后台

        • 5.1 将Model注册到管理后台
        • 5.2 管理后台实现原理
      • chapter-06:视图

        • 6.1 视图基础
        • 6.2 视图的高级特性和快捷方法
        • 6.3 基于类的通用视图
      • chapter-07:模板系统

        • 7.1 模板系统基础
        • 7.2 模板语言
      • chapter-08:表单系统

        • 8.2 使用表单系统实现表单: ModelForm
      • chapter-09:用户认证系统

        • 9.1 用户与身份认证
        • 9.2 权限管理
        • 9.3 用户认证系统应用
      • chapter-10:Django路由系统

        • 10.1 路由系统基础
      • chapter-11:Django中间件

        • 11.1 中间件基础
  • Python例子

    • Python: Linux的Shell命令
    • Python: PEP8自动格式化代码
    • Python: pip操作
    • Python: 业务服务监控
    • Python: 从文件逐行读取数据
    • 将链表转换为字符串
    • Python: 检查URL是否能正常访问
    • Python: 爬取网易云音乐
    • Python: 读取目录下的所有内容
    • 案例研究:文本统计
  • Python爬虫

    • 数据解析工具:Xpath
  • 算法题

    • 02:两数相加
    • 09:回文数
    • 13:罗马数值转换为整数
    • 14:最长公共前缀

3.1 Django管理工具-创建项目骨架

  • 概述
  • 3.1.1 django-admin 创建项目骨架
    • 创建新项目
    • 项目结构
    • 文件说明
    • 启动开发服务器
    • 环境验证
  • 3.1.2 settings.py文件配置项解析
    • BASE_DIR
    • SECRET_KEY
    • DEBUG
    • ALLOWED_HOSTS
    • INSTALLED_APPS
    • MIDDLEWARE
    • ROOT_URLCONF
    • TEMPLATES
    • DATABASES
    • 国际化相关配置
    • STATIC_URL
  • 最佳实践

概述

Django 提供了强大的命令行工具 django-admin,用于创建和管理项目。本章将介绍:

  • 如何创建新项目
  • 项目结构说明
  • 配置文件详解

3.1.1 django-admin 创建项目骨架

创建新项目

使用 django-admin 创建新项目:

# 创建名为 my_bbs 的项目
django-admin startproject my_bbs

项目结构

命令执行后会生成以下项目结构:

my_bbs/                  # 项目根目录
├── manage.py           # 项目管理脚本
└── my_bbs/            # 项目配置包
     ├── __init__.py    # Python 包标识
     ├── settings.py    # 项目配置文件
     ├── urls.py        # URL 路由配置
     └── wsgi.py        # WSGI 应用入口

文件说明

文件用途
manage.py项目管理命令行工具
settings.py项目配置文件
urls.pyURL 路由映射配置
wsgi.pyWSGI 服务器入口

启动开发服务器

# 进入项目目录
cd my_bbs

# 启动开发服务器
python manage.py runserver


# 指定端口启动
python manage.py runserver 8080

环境验证

# 检查 Django 版本
python -m django --version

# 进入项目 shell
python manage.py shell

3.1.2 settings.py文件配置项解析

settings.py 文件包含了项目的所有配置项,以下详细说明每个配置的作用:

BASE_DIR

  • __file__:显示当前文件的位置
  • os.path.abspath(__file__):返回当前文件的绝对路径
  • os.path.dirname(os.path.abspath(__file__)):得到当前文件所在的目录
  • os.path.dirname(os.path.dirname(os.path.abspath(__file__))):返回项目根目录的绝对路径
# 在 shell 中验证 BASE_DIR
from my_bbs.settings import BASE_DIR
print(BASE_DIR)

SECRET_KEY

  • 用途:对需要加密的数据进行 Hash 处理
    • 如:密码重置、表单提交、session 数据等
  • 建议:存储到系统环境变量中,通过 os.getenv() 获取
  • 生成:在 startproject 时通过 get_random_string 生成 50 位随机字符串
# 密钥设置(建议使用环境变量)
SECRET_KEY = 'your-secret-key'

DEBUG

  • 作用:控制是否显示详细的错误信息和调试信息
  • 开发环境:设置为 True
  • 生产环境:必须设置为 False
# 调试模式(生产环境设为 False)
DEBUG = True

ALLOWED_HOSTS

  • 作用:配置允许访问当前站点的域名列表
  • 当 DEBUG=False 时必须配置
  • 示例:ALLOWED_HOSTS = ['*'] 允许所有域名访问
# 允许访问的主机
ALLOWED_HOSTS = ['*']

INSTALLED_APPS

  • 作用:配置当前项目需要加载的 App 列表
  • 默认包含:
    • admin:管理后台
    • auth:认证系统
    • sessions:会话系统
  • 可根据需要增减配置
INSTALLED_APPS = [
    'django.contrib.admin',     # 管理后台
    'django.contrib.auth',      # 认证系统
    'django.contrib.sessions',  # 会话系统
    # ... 其他应用
]

MIDDLEWARE

  • 作用:配置需要加载的中间件列表
  • 默认包含:
    • SessionMiddleware:处理会话
    • AuthenticationMiddleware:处理认证
  • 可根据需要增减配置
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    # ... 其他中间件
]

ROOT_URLCONF

  • 作用:指定项目的根 URL 配置
  • 是 Django 路由系统的入口点
ROOT_URLCONF = 'my_bbs.urls'

TEMPLATES

  • 作用:项目的模板配置
  • 配置结构:列表中每个元素是一个字典
  • 默认使用 DTL(DjangoTemplates)模板引擎
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
            ],
        },
    },
]

DATABASES

  • 作用:数据库配置
  • 默认使用 SQLite3
  • 支持多数据库配置
  • 生产环境通常需要修改此配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

国际化相关配置

  • LANGUAGE_CODE:语言环境
  • TIME_ZONE:时区设置
  • USE_I18N:是否开启国际化(I18N)
  • USE_L10N:是否开启本地化(L10N)
  • USE_TZ:时区处理
    • True:存储到数据库的时间使用 UTC
    • False:使用本地时间
# 语言和时区
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

# 国际化和本地化
USE_I18N = True
USE_L10N = True
USE_TZ = True

STATIC_URL

  • 作用:指定静态资源的访问路径
STATIC_URL = 'static/'

最佳实践

  1. 项目结构

    • 保持清晰的目录结构
    • 遵循 Python 包命名规范
    • 合理组织配置文件
  2. 配置管理

    • 使用环境变量
    • 分离开发和生产配置
    • 保护敏感信息
  3. 开发流程

    • 使用版本控制
    • 遵循 Django 最佳实践
    • 保持代码整洁

注意:

  • 不要在版本控制中提交 SECRET_KEY
  • 生产环境禁用 DEBUG
  • 谨慎配置 ALLOWED_HOSTS
最近更新时间:
Next
3.2 修改项目的默认配置