pin_drop当前位置:知识文库 ❯ 图文

Django项目创建 - startproject命令与settings配置详解

一、概述

Django项目是Web应用的基础容器,包含全局配置、URL路由和应用集合。通过django-admin startproject命令可以快速创建项目骨架。项目创建后,manage.py是核心管理工具,用于运行服务器、执行迁移、创建应用等操作。

每个Django项目都是一个独立的Python包,包含配置和运行时所需的全部文件。项目目录结构遵循约定优于配置的原则,使开发者能够快速上手并保持项目的一致性。


二、语法与命令

创建和管理Django项目的常用命令如下:

代码示例

# 创建项目
django-admin startproject project_name [directory]

# 运行开发服务器
python manage.py runserver [addrport]

# 执行数据库迁移
python manage.py migrate

# 创建管理员账户
python manage.py createsuperuser

其中,django-admin是Django提供的命令行工具,用于创建项目;manage.py是每个项目自动生成的管理脚本,功能与django-admin类似,但会自动设置项目的环境变量。


三、参数说明

startproject 参数

参数 必填 说明
project_name 项目名称(Python包名规范)
directory 项目目录,默认为当前目录

manage.py 常用命令

命令 说明
runserver [addrport] 启动开发服务器
migrate 执行数据库迁移
makemigrations 创建迁移文件
createsuperuser 创建管理员
startapp name 创建应用
shell 进入Django Shell
collectstatic 收集静态文件
check 检查项目问题

项目文件说明

文件 说明
manage.py 项目管理脚本
settings.py 项目配置
urls.py 根URL配置
wsgi.py WSGI部署入口
asgi.py ASGI部署入口

四、代码示例

示例1:创建项目并启动服务器

代码示例

# 创建项目
django-admin startproject mysite

# 进入项目目录
cd mysite

# 执行初始迁移
python manage.py migrate

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

输出:

代码示例

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
December 15, 2024 - 10:00:00
Django version 5.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

启动成功后,在浏览器中访问http://127.0.0.1:8000/即可看到Django的欢迎页面。

示例2:settings.py关键配置

代码示例

# mysite/settings.py 关键配置

# 安全密钥(生产环境必须保密)
SECRET_KEY = 'django-insecure-xxx'

# 调试模式
DEBUG = True

# 允许的主机
ALLOWED_HOSTS = []

# 已安装的应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# 中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

# 数据库配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# 语言和时区
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
  • SECRET_KEY:用于加密签名的密钥,生产环境必须保密且唯一

  • DEBUG:调试模式,开发时为True,生产环境必须为False

  • ALLOWED_HOSTS:允许访问的主机列表,生产环境必须配置

  • INSTALLED_APPS:已安装的应用列表,Django内置应用和自定义应用都需要在此注册

示例3:创建第一个视图

代码示例

# mysite/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, Django!")

# mysite/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

访问 http://127.0.0.1:8000/ 输出:

代码示例

Hello, Django!

path()函数用于定义URL路由,第一个参数是URL模式,第二个参数是对应的视图函数,name参数用于在模板和代码中反向解析URL。


五、实际应用场景

  • 开始新的Web项目:创建标准Django项目结构,包含配置、路由和管理脚本,为后续开发奠定基础

  • 快速原型开发:启动开发服务器验证功能,Django的热重载功能可以在修改代码后自动刷新,提高开发效率

  • 团队协作:统一项目结构和配置,团队成员可以快速理解项目架构,降低沟通成本


六、注意事项

注意:项目名称不能与Python标准库或Django内置模块重名,如不能命名为django、test、sys等,否则会导致导入冲突。

注意:SECRET_KEY必须保密,不要提交到版本控制系统。建议使用环境变量或密钥管理服务来存储,如python-dotenv库。

注意:runserver仅用于开发,不能用于生产环境部署。它不具备高并发处理能力,也没有安全防护机制。生产环境应使用Gunicorn、uWSGI等专业WSGI服务器。

注意:创建项目后应先执行migrate初始化数据库,Django内置的认证、会话等功能依赖数据库表,未执行迁移会导致运行时错误。


七、Django命令对比

命令 说明 使用频率
startproject 创建项目 一次
startapp 创建应用 多次
runserver 启动开发服务器 开发时
migrate 执行迁移 多次
makemigrations 创建迁移 多次
createsuperuser 创建管理员 一次

小贴士

使用python manage.py runserver 0.0.0.0:8000可以让开发服务器监听所有网络接口,方便局域网内其他设备访问。使用runserver 8080可以快速切换端口号。


八、小结

  • django-admin startproject创建项目,manage.py管理项目

  • settings.py是核心配置文件,包含数据库、中间件、应用等配置

  • runserver启动开发服务器,默认监听8000端口

  • 创建项目后应先migrate初始化数据库


九、练习题

练习1

创建一个名为bookstore的Django项目,修改settings.py的LANGUAGE_CODE为zh-hans,TIME_ZONE为Asia/Shanghai

练习2

在创建的项目中添加一个首页视图,返回"欢迎来到书店",并配置URL路由

常见问题

django-admin和manage.py有什么区别?

django-admin是Django提供的全局命令行工具,可以在任何位置使用,用于创建项目等通用操作。manage.py是每个Django项目自动生成的脚本,功能与django-admin类似,但会自动设置DJANGO_SETTINGS_MODULE环境变量,指向当前项目的settings.py。因此在项目目录内,使用manage.py更加方便。

创建项目后为什么需要先执行migrate?

Django内置了多个应用(如admin、auth、sessions等),这些应用需要在数据库中创建对应的表才能正常工作。执行migrate会根据内置应用的迁移文件创建这些表。如果不执行migrate,访问Admin后台或使用认证功能时会报错。

SECRET_KEY的作用是什么?泄露了怎么办?

SECRET_KEY用于加密签名,包括会话Cookie、密码重置令牌、CSRF令牌等。如果SECRET_KEY泄露,攻击者可以伪造会话、重置密码等。泄露后应立即生成新的SECRET_KEY并替换,所有用户的会话将失效,需要重新登录。生产环境建议使用环境变量存储SECRET_KEY。

如何将Django项目连接到MySQL数据库?

首先安装MySQL驱动:pip install mysqlclient 或 pip install pymysql。然后在settings.py中配置DATABASES:ENGINE改为django.db.backends.mysql,NAME为数据库名,USER为用户名,PASSWORD为密码,HOST为数据库地址(如localhost),PORT为端口(如3306)。最后执行python manage.py migrate创建表结构。

如何在Django项目中配置静态文件?

在settings.py中设置STATIC_URL = '/static/'定义静态文件的URL前缀。开发阶段,Django会自动从各应用的static目录中查找静态文件。生产环境需要执行python manage.py collectstatic将所有静态文件收集到STATIC_ROOT指定的目录中,并由Nginx等Web服务器提供访问。

标签: Django项目 startproject manage.py settings配置 开发服务器 URL路由

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Django简介 - Python最流行的Web框架入门指南 下一篇: Django应用创建 - startapp命令与模块化开发指南

poll相关推荐