Django 创建第一个项目(千字长文)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
前言
在 Web 开发领域,Django 以其高效性、可扩展性和安全性而闻名。它通过“MTV 架构”(Model-Template-View)将开发流程模块化,为开发者提供了“开箱即用”的解决方案。对于编程初学者和中级开发者而言,从零开始创建第一个 Django 项目,既是学习框架的起点,也是验证理论知识的实践机会。本文将以“Django 创建第一个项目”为核心,通过分步骤的讲解、代码示例和常见问题解析,帮助读者完成从环境搭建到项目运行的全流程。
环境准备与安装
Python 版本与虚拟环境
Django 对 Python 版本有明确要求,目前支持 Python 3.8 至 3.12。建议使用 Python 3.10 或更高版本以获得最佳兼容性。为了隔离项目依赖,推荐通过虚拟环境管理工具(如 venv
或 conda
)创建独立的开发环境。
步骤示例:
- 安装 Python:访问 Python 官网 下载并安装最新版本。
- 创建虚拟环境:
python -m venv django_env source django_env/bin/activate # Linux/MacOS django_env\Scripts\activate # Windows
- 安装 Django:
pip install django==4.2.5
Django 的核心设计理念
Django 的设计理念可类比“乐高积木”——它提供了标准化的模块(如用户认证、表单处理、数据库 ORM),开发者只需根据需求“拼接”这些模块即可快速构建应用。这种“约定优于配置”的原则,降低了学习成本,也减少了重复性工作。
创建第一个 Django 项目
使用 django-admin
命令初始化
Django 提供了 django-admin
工具来简化项目创建流程。执行以下命令即可生成基础项目结构:
django-admin startproject myfirstproject
cd myfirstproject
项目目录结构解析
myfirstproject/
├── manage.py # 项目管理入口
├── myfirstproject/ # 项目配置目录
│ ├── __init__.py # 标记为 Python 包
│ ├── settings.py # 项目配置文件
│ ├── urls.py # 全局路由配置
│ └── wsgi.py # WSGI 兼容配置
运行开发服务器
在项目根目录下执行:
python manage.py runserver
此时,Django 会启动本地开发服务器(默认端口为 8000
),访问 http://localhost:8000
,若看到“Welcome to the Django project”页面,则说明环境配置成功。
项目配置与环境设置
settings.py
核心配置项
settings.py
是 Django 项目的“控制中心”,包含数据库、中间件、静态文件路径等关键配置。以下为常见配置项的说明:
配置项 | 作用描述 |
---|---|
DEBUG | 是否开启调试模式,生产环境应设为 False |
ALLOWED_HOSTS | 允许访问的域名列表,本地开发可设为 ["*"] |
DATABASES | 数据库配置,Django 默认使用 SQLite,可扩展为 MySQL 或 PostgreSQL |
示例:配置 PostgreSQL 数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydb',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
静态文件与媒体文件管理
Django 区分静态资源(如 CSS、JS)和媒体资源(用户上传文件)。通过以下配置指定存储路径:
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles' # 静态文件收集目录
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media' # 用户上传文件存储目录
创建并配置第一个应用
应用与项目的区别
在 Django 中,项目(Project)是多个应用(App)的集合。例如,一个电商网站可能包含 accounts
(用户模块)、products
(商品模块)等独立应用。这种分层设计提高了代码的可维护性。
创建应用 hello_world
python manage.py startapp hello_world
此时,项目目录新增:
myfirstproject/
└── hello_world/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
└── views.py
配置路由与视图
步骤 1:在 urls.py
中定义路由
在项目根目录的 urls.py
中添加应用的路由入口:
from django.urls import path, include
urlpatterns = [
path('hello/', include('hello_world.urls')), # 匹配 /hello/ 路径
# 其他路由配置
]
步骤 2:在应用中创建 urls.py
在 hello_world
目录下新建 urls.py
:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'), # 匹配 /hello/
]
步骤 3:编写视图函数
在 views.py
中定义响应逻辑:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, Django!")
验证效果
访问 http://localhost:8000/hello/
,页面应显示“Hello, Django!”。
数据库模型与迁移
定义模型类
Django 的 ORM(对象关系映射)允许通过 Python 类定义数据库表结构。例如,创建一个简单的 Article
模型:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
迁移数据库
执行以下命令生成并应用迁移文件:
python manage.py makemigrations hello_world
python manage.py migrate
此时,Django 会在数据库中创建对应的表结构。
模板与视图渲染
模板引擎与继承关系
Django 使用模板系统(Django Templates)分离业务逻辑与展示层。模板支持继承、循环、条件判断等语法。
示例:创建基础模板
在 templates
目录下新建 base.html
:
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My Site{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
子模板继承
在 hello_world
应用的模板目录下创建 index.html
:
{% extends 'base.html' %}
{% block title %}Hello Page{% endblock %}
{% block content %}
<h1>{{ greeting }}</h1>
{% endblock %}
视图传递数据
修改 views.py
,将数据传递给模板:
from django.shortcuts import render
def index(request):
context = {
'greeting': "Welcome to Django World!"
}
return render(request, 'hello_world/index.html', context)
调试与常见问题
开发环境调试技巧
- 启用调试模式:在
settings.py
中设置DEBUG = True
,Django 会显示详细的错误页面。 - 使用
pdb
调试器:在视图函数中插入import pdb; pdb.set_trace()
,可逐行调试代码。 - 静态文件未加载:执行
python manage.py collectstatic
收集静态文件。
常见问题解析
- 端口被占用:尝试更换端口,如
python manage.py runserver 8001
。 - 迁移失败:先执行
python manage.py flush
清空数据库,再重新迁移。 - 模板未渲染:确保模板文件路径正确,并在
settings.py
中配置TEMPLATES
目录。
结论
通过本文的步骤,读者已完成了从 Django 环境搭建到项目运行的全流程。从虚拟环境的创建、项目结构的解析,到模型设计、视图与模板的联动,每个环节都体现了 Django 的高效性和模块化优势。
对于初学者而言,建议通过以下方式深化学习:
- 扩展功能:尝试添加用户注册、登录功能,或集成第三方库(如 Django REST Framework)。
- 优化性能:学习缓存机制、数据库索引优化等进阶知识。
- 部署实践:探索将项目部署到生产环境(如使用 Nginx + Gunicorn)。
Django 的学习曲线虽有一定挑战,但其强大的生态支持和社区资源(如官方文档、Stack Overflow)能为开发者提供持续帮助。通过持续实践,开发者将能快速构建出功能丰富、结构清晰的 Web 应用。
关键词布局:本文通过分步骤讲解“Django 创建第一个项目”的核心流程,覆盖了环境配置、项目初始化、应用开发、数据库迁移及模板渲染等关键知识点,帮助读者系统掌握从零到一的开发过程。