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 参数
manage.py 常用命令
项目文件说明
四、代码示例
示例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命令对比
小贴士
使用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服务器提供访问。
本文涉及AI创作
内容由AI创作,请仔细甄别