Django作为Python生态中主流的Web开发框架,创建项目后会自动生成一套规范的项目结构,其中settings.py、urls.py、wsgi.py是支撑项目运行的核心文件,理解它们的用途是掌握Django开发的基础。

Django项目标准结构概览
使用django-admin startproject myproject命令创建项目后,会生成如下的基础目录结构:
myproject/
├── manage.py
└── myproject/
├── __init__.py
├── settings.py
├── urls.py
├── wsgi.py
└── asgi.py
外层myproject是项目的容器目录,内层myproject是项目的实际Python包,核心配置文件都存放在内层目录中。
核心文件作用解析
1. settings.py:项目全局配置文件
settings.py是Django项目的核心配置中心,所有项目的运行参数都在这个文件中定义。它包含了数据库配置、已安装应用、中间件、模板配置、静态文件路径等关键信息。
以下是settings.py中常见的配置项示例:
# 已安装的应用列表,自定义应用需要添加到这里才会被Django识别
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 自定义应用
]
# 数据库配置,默认使用SQLite
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# 项目根目录
BASE_DIR = Path(__file__).resolve().parent.parent
# 密钥配置,生产环境需要替换为随机复杂字符串
SECRET_KEY = 'django-insecure-xxxxxx'
# 调试模式,生产环境必须设置为False
DEBUG = True
# 允许访问的域名列表,生产环境需要配置具体域名
ALLOWED_HOSTS = []
修改settings.py的配置后,通常需要重启Django开发服务器才能让配置生效。
2. urls.py:项目路由配置文件
urls.py负责定义项目的URL路由规则,即把用户请求的URL路径映射到对应的视图函数或者类视图上。Django接收到请求后,会按照urls.py中定义的规则从上到下匹配,匹配到对应的路由后执行对应的处理逻辑。
基础的项目级urls.py示例:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls), # 后台管理路由
path('api/', include('myapp.urls')), # 引入应用级的路由配置
path('', include('myapp.urls')), # 根路径路由
]
通常我们会把不同功能模块的路由拆分到各个应用自己的urls.py中,再通过include函数引入到项目级的urls.py里,这样能让路由结构更清晰,方便维护。
3. wsgi.py:WSGI兼容服务器入口文件
wsgi.py是Django项目用于部署到WSGI兼容服务器(比如Gunicorn、uWSGI)的入口文件。WSGI是Python Web服务器和Web应用之间的通用接口规范,wsgi.py的作用就是创建一个符合WSGI规范的应用对象,让服务器能够调用Django项目处理请求。
默认的wsgi.py内容如下:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
application = get_wsgi_application()
部署项目时,服务器的配置通常会指向这个文件,比如使用Gunicorn启动项目时可以执行gunicorn myproject.wsgi:application命令。
其他配套文件说明
manage.py:Django项目的命令行工具,用于执行启动服务器、创建应用、执行数据库迁移等各种管理操作,比如python manage.py runserver就是启动开发服务器的命令。__init__.py:空文件,作用是把当前目录标记为Python包,让Python能够识别这个目录下的模块。asgi.py:ASGI兼容服务器的入口文件,用于支持异步请求处理,是Django3.0之后新增的文件,和wsgi.py的作用类似,只是面向的服务器规范不同。
结构理解注意事项
实际开发中如果创建了多个Django应用,每个应用目录下也会有自己的urls.py、views.py等文件,这些应用级的配置会和项目级的配置配合工作。另外不要随意删除项目自动生成的文件,尤其是核心的配置文件,删除后可能会导致项目无法正常运行。
提示:如果是开发新功能,建议先通过python manage.py startapp 应用名创建独立的应用,再在应用内编写视图、路由等代码,保持项目的模块化结构。
Djangosettings.pyurls.pywsgi.py修改时间:2026-06-28 13:57:49