Django 的核心优势是 "开箱即用",不用纠结复杂配置,跟着 "环境搭建→创建项目→核心功能实现→运行测试" 的步骤走,新手也能快速落地成果,下面用最通俗的操作和案例,帮你快速入门:
一、前期准备:搞定 3 个基础(10 分钟)
1. 安装 Python(必备)
Django 是 Python 框架,先确保电脑装了 Python 3.8 及以上版本(推荐 3.10):
- 下载地址:Python 官网(安装时勾选 "Add Python to PATH",自动配置环境变量);
- 验证:打开命令行(Windows cmd / 终端),输入
python --version,显示版本号即成功。
2. 安装 Django(一行命令)
命令行输入以下命令,自动安装最新版 Django:
bash
运行
pip install django
验证:输入django-admin --version,显示版本号(比如 5.0.1)即安装成功。
3. 选一个代码编辑器(推荐)
新手用 VS Code(免费、轻量,装 "Python""Django" 插件),或 PyCharm(专业版对 Django 支持更好,社区版足够入门),不用复杂配置,打开文件夹就能写代码。
二、核心步骤:3 小时做出 "个人博客"(实战案例)
我们以 "简单个人博客" 为目标,实现 3 个核心功能:① 显示文章列表 ② 查看文章详情 ③ 后台管理文章(增删改查),全程不用写复杂代码。
步骤 1:创建 Django 项目和应用(15 分钟)
Django 项目是 "总工程",应用(App)是 "功能模块"(比如博客、用户系统),一个项目可以包含多个应用。
(1)创建项目
命令行切换到你想存放项目的文件夹(比如cd 桌面/学习),输入以下命令,创建名为myblog的项目:
bash
运行
django-admin startproject myblog
执行后,桌面会出现myblog文件夹,内部结构是 Django 自动生成的,不用手动改:
plaintext
myblog/ # 项目根目录
manage.py # 命令行工具(启动服务、创建应用等)
myblog/ # 项目核心配置文件夹
settings.py # 项目配置(数据库、插件等)
urls.py # 路由配置(网址→对应功能)
wsgi.py # 服务器适配(不用管)
asgi.py # 异步服务(不用管)
(2)创建 "博客" 应用
进入项目根目录(先cd myblog),输入命令创建名为blog的应用:
bash
运行
python manage.py startapp blog
执行后,项目里会新增blog文件夹,这是我们写博客功能的核心目录:
plaintext
blog/
migrations/ # 数据库迁移文件(自动生成)
models.py # 数据模型(定义文章、用户等数据结构)
views.py # 业务逻辑(处理用户请求,返回内容)
urls.py # 应用路由(博客相关网址配置)
admin.py # 后台管理配置(注册模型,自动生成后台)
apps.py # 应用配置(不用改)
tests.py # 测试代码(入门不用管)
(3)注册应用(关键步骤)
打开myblog/settings.py(项目配置文件),找到INSTALLED_APPS列表,添加'blog'(应用名),告诉 Django "我要用到这个应用":
python
运行
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # 新增这一行,注册博客应用
]
步骤 2:定义数据模型(20 分钟)
数据模型就是 "数据库表的设计",用 Python 类定义,Django 会自动生成数据库表,不用写 SQL。打开blog/models.py,写一个Article类(代表 "博客文章"),包含标题、内容、发布时间 3 个字段:
python
运行
from django.db import models
# 博客文章模型
class Article(models.Model):
# 标题:字符串类型,最大长度100
title = models.CharField(max_length=100)
# 内容:文本类型(可存长文本)
content = models.TextField()
# 发布时间:自动记录创建时间(新增文章时不用手动填)
pub_time = models.DateTimeField(auto_now_add=True)
# 后台显示文章标题(默认显示对象名,不直观)
def __str__(self):
return self.title
(1)生成数据库表
命令行执行以下 2 条命令,Django 会自动根据模型创建数据库表:
bash
运行
# 1. 生成迁移文件(记录模型变更)
python manage.py makemigrations
# 2. 执行迁移(创建/更新数据库表)
python manage.py migrate
执行后,项目里会生成db.sqlite3文件(默认数据库,不用管),文章表就创建好了。
(2)注册模型到后台(自动生成管理页面)
打开blog/admin.py,注册Article模型,Django 会自动生成 "文章管理" 的后台页面:
python
运行
from django.contrib import admin
from .models import Article # 导入Article模型
# 注册模型(默认生成增删改查功能)
admin.site.register(Article)
(3)创建超级管理员(登录后台用)
命令行输入以下命令,按提示设置用户名、邮箱、密码(密码输入时不显示,正常输入即可):
bash
运行
python manage.py createsuperuser
比如设置:用户名admin,密码123456(测试用,正式项目用复杂密码)。
步骤 3:实现 "显示文章列表" 功能(30 分钟)
(1)写视图函数(处理请求,返回数据)
打开blog/views.py,定义article_list函数,查询所有文章,传给前端页面:
python
运行
from django.shortcuts import render
from .models import Article # 导入模型
# 文章列表视图
def article_list(request):
# 查询所有文章(按发布时间倒序,最新的在前面)
articles = Article.objects.all().order_by('-pub_time')
# 把文章数据传给前端页面('articles'是前端用的变量名)
return render(request, 'blog/article_list.html', {'articles': articles})
(2)创建前端模板(页面样式)
Django 的模板的是 HTML 文件,能嵌入 Python 变量和逻辑,步骤:
- 在
blog文件夹下,新建templates文件夹(必须叫这个名); - 在
templates下新建blog文件夹(避免和其他应用模板冲突); - 在
blog/templates/blog/下新建article_list.html文件,写页面代码:
html
预览
<!DOCTYPE html>
<html>
<head>
<title>我的博客</title>
<meta charset="utf-8">
<style>
/* 简单样式,让页面好看点 */
.container { width: 800px; margin: 0 auto; }
.article { margin: 20px 0; padding: 10px; border: 1px solid #eee; }
.title { font-size: 20px; color: #2c3e50; }
.time { color: #999; font-size: 14px; }
</style>
</head>
<body>
<div class="container">
<h1>我的博客</h1>
<!-- 循环显示所有文章 -->
{% for article in articles %}
<div class="article">
<h2 class="title">{{ article.title }}</h2> <!-- 显示文章标题 -->
<p class="time">发布时间:{{ article.pub_time|date:"Y-m-d H:i" }}</p> <!-- 格式化时间 -->
<p>{{ article.content|truncatechars:100 }}</p> <!-- 只显示前100字 -->
<!-- 文章详情链接(后面会实现) -->
<a href="/article/{{ article.id }}/">查看全文</a>
</div>
{% empty %}
<p>暂无文章,快去后台添加吧!</p> <!-- 没有文章时显示 -->
{% endfor %}
</div>
</body>
</html>
模板语法说明:{``{ 变量名 }}显示数据,{% 逻辑 %}写循环 / 判断,不用懂复杂前端,复制修改即可。
(3)配置路由(网址→视图函数)
路由就是 "用户访问哪个网址,对应哪个功能",分 2 步:
- 应用路由(
blog/urls.py):新建urls.py文件,配置博客相关路由:
python
运行
from django.urls import path
from .views import article_list # 导入视图函数
urlpatterns = [
# 访问 "/article/list/" 时,调用article_list视图
path('list/', article_list, name='article_list'),
]
- 项目路由(
myblog/urls.py):把应用路由注册到项目,让 Django 识别:
python
运行
from django.contrib import admin
from django.urls import path, include # 导入include
urlpatterns = [
path('admin/', admin.site.urls), # 后台管理网址(默认)
# 访问 "/article/" 开头的网址,交给blog应用的urls处理
path('article/', include('blog.urls')),
]
步骤 4:实现 "文章详情" 功能(20 分钟)
(1)写详情视图函数
打开blog/views.py,新增article_detail函数,根据文章 ID 查询单篇文章:
python
运行
from django.shortcuts import render, get_object_or_404 # 新增get_object_or_404
from .models import Article
# 文章详情视图(接收文章ID参数)
def article_detail(request, article_id):
# 根据ID查询文章,不存在则返回404页面
article = get_object_or_404(Article, id=article_id)
# 把文章数据传给详情页模板
return render(request, 'blog/article_detail.html', {'article': article})
(2)创建详情页模板
在blog/templates/blog/下新建article_detail.html:
html
预览
<!DOCTYPE html>
<html>
<head>
<title>{{ article.title }}</title>
<meta charset="utf-8">
<style>
.container { width: 800px; margin: 0 auto; }
.title { color: #2c3e50; text-align: center; }
.time { color: #999; text-align: center; }
.content { margin: 20px 0; line-height: 1.8; }
a { color: #3498db; text-decoration: none; }
</style>
</head>
<body>
<div class="container">
<h1 class="title">{{ article.title }}</h1>
<p class="time">发布时间:{{ article.pub_time|date:"Y-m-d H:i" }}</p>
<div class="content">{{ article.content|linebreaks }}</div> <!-- 换行显示内容 -->
<a href="/article/list/">返回列表</a>
</div>
</body>
</html>
(3)配置详情页路由
打开blog/urls.py,新增详情页路由(接收article_id参数):
python
运行
from django.urls import path
from .views import article_list, article_detail # 导入详情视图
urlpatterns = [
path('list/', article_list, name='article_list'),
# 访问 "/article/1/" 时,调用article_detail,article_id=1
path('<int:article_id>/', article_detail, name='article_detail'),
]
步骤 5:运行项目,测试效果(10 分钟)
(1)启动开发服务器
命令行输入以下命令,启动 Django 内置的开发服务器:
bash
运行
python manage.py runserver
出现 "Starting development server at http://127.0.0.1:8000/" 即成功,不要关闭命令行。
(2)访问测试
打开浏览器,输入以下网址,查看效果:
- 后台管理:http://127.0.0.1:8000/admin/ → 用之前创建的超级管理员账号(admin/123456)登录,能看到 "Articles" 模块,可新增、编辑、删除文章;
- 文章列表:http://127.0.0.1:8000/article/list/ → 能看到后台添加的文章,没有文章则显示 "暂无文章";
- 文章详情:点击列表页的 "查看全文",能跳转到详情页,显示完整文章内容。
步骤 6:常见问题排查(新手必看)
- 启动服务器报错 "端口被占用":换端口启动,命令
python manage.py runserver 8080,访问时用http://127.0.0.1:8080/; - 访问页面 404:检查路由配置(
urls.py的路径是否正确)、模板文件夹路径是否是 "templates/blog/"; - 后台看不到模型:检查
admin.py是否注册了模型,是否执行了makemigrations和migrate命令; - 模板不显示数据:检查视图函数是否传递了变量(比如
{'articles': articles}),模板里的变量名是否和视图一致。
三、后续学习:3 个方向快速进阶(可选)
- 完善功能 :添加用户登录(用 Django 自带的
auth模块)、评论功能(新增Comment模型)、分类标签; - 优化页面:用 Bootstrap 替换自定义样式(不用写 CSS,直接用现成组件),让页面更美观;
- 部署上线:学习把项目部署到服务器(比如阿里云、腾讯云),让别人能通过公网访问你的博客。
总结
快速上手 Django 的核心是 "先做最小可行项目 "------ 不用先学所有模块,先通过 "模型→视图→模板→路由" 的流程,做出能运行的功能,再逐步扩展。Django 的 "开箱即用" 特性让你不用纠结底层,专注业务逻辑,按上面的步骤走,3 小时就能体验从 0 到 1 的成就感,后续再结合官方文档(Django 中文文档)补充细节即可~