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 或更高版本以获得最佳兼容性。为了隔离项目依赖,推荐通过虚拟环境管理工具(如 venvconda)创建独立的开发环境。

步骤示例:

  1. 安装 Python:访问 Python 官网 下载并安装最新版本。
  2. 创建虚拟环境
    python -m venv django_env  
    source django_env/bin/activate  # Linux/MacOS  
    django_env\Scripts\activate    # Windows  
    
  3. 安装 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)  

调试与常见问题

开发环境调试技巧

  1. 启用调试模式:在 settings.py 中设置 DEBUG = True,Django 会显示详细的错误页面。
  2. 使用 pdb 调试器:在视图函数中插入 import pdb; pdb.set_trace(),可逐行调试代码。
  3. 静态文件未加载:执行 python manage.py collectstatic 收集静态文件。

常见问题解析

  • 端口被占用:尝试更换端口,如 python manage.py runserver 8001
  • 迁移失败:先执行 python manage.py flush 清空数据库,再重新迁移。
  • 模板未渲染:确保模板文件路径正确,并在 settings.py 中配置 TEMPLATES 目录。

结论

通过本文的步骤,读者已完成了从 Django 环境搭建到项目运行的全流程。从虚拟环境的创建、项目结构的解析,到模型设计、视图与模板的联动,每个环节都体现了 Django 的高效性和模块化优势。

对于初学者而言,建议通过以下方式深化学习:

  1. 扩展功能:尝试添加用户注册、登录功能,或集成第三方库(如 Django REST Framework)。
  2. 优化性能:学习缓存机制、数据库索引优化等进阶知识。
  3. 部署实践:探索将项目部署到生产环境(如使用 Nginx + Gunicorn)。

Django 的学习曲线虽有一定挑战,但其强大的生态支持和社区资源(如官方文档、Stack Overflow)能为开发者提供持续帮助。通过持续实践,开发者将能快速构建出功能丰富、结构清晰的 Web 应用。


关键词布局:本文通过分步骤讲解“Django 创建第一个项目”的核心流程,覆盖了环境配置、项目初始化、应用开发、数据库迁移及模板渲染等关键知识点,帮助读者系统掌握从零到一的开发过程。

最新发布