Django入门教程:搭建你的第一个Python网站
开篇:Django是什么,能做什么?

在当今的互联网世界中,网站无处不在。无论你是想开发一个博客系统、电商平台,还是企业内部的管理系统,你都需要一个强大而高效的工具来实现这些功能。Django就是这样一个工具,它是用Python语言编写的一个高级Web框架,帮助开发者快速构建安全、可维护且功能强大的网站。
Django的设计理念是“以开发者为中心”,这意味着它提供了许多开箱即用的功能,比如数据库管理、用户认证、后台管理等等。通过使用Django,你可以将更多精力放在业务逻辑上,而不是重复的基础工作。
本教程面向完全零基础的新手,我们会一步步带你了解Django的核心概念,并最终完成一个简单但完整的网页项目。准备好开始了吗?我们先从最基础的环境搭建讲起!
环境准备:配置你的Django开发环境

1. 安装Python
Django是基于Python的框架,因此第一步就是确保你的电脑上已经安装了Python。我们推荐使用Python 3.8+版本。
如何检查是否已安装Python?
- Windows:打开命令提示符(cmd),输入:
python --version - Mac/Linux:打开终端,输入:
python3 --version
如果看到类似 Python 3.10.x 的输出,说明你已安装;否则需要手动安装。
下载和安装Python:
前往 https://www.python.org/downloads/ 下载对应系统的Python安装包,运行后记得勾选 Add to PATH(Windows)或者自动添加路径(Mac/Linux)。
2. 创建虚拟环境(Virtual Environment)
为了防止不同项目的依赖冲突,我们建议为每个项目创建独立的虚拟环境。
在任意位置新建一个文件夹,比如 my_first_django_project,然后进入该目录,在命令行中执行以下命令创建并激活虚拟环境:
Windows系统:
python -m venv env
env\Scripts\activate
Mac/Linux系统:
python3 -m venv env
source env/bin/activate
激活后你应该会在命令行前看到 (env) 提示,表示当前处于虚拟环境中。
3. 安装Django
安装Django非常简单,只需一条pip命令即可完成:
pip install django
安装完成后,可以用下面这条命令验证是否安装成功:
django-admin --version
如果能看到版本号(例如 4.2.5),说明Django已成功安装!
核心概念:理解Django的关键组成部分
学习任何编程技术,都必须理解它的基本结构和核心组件。下面我们将介绍几个Django中最关键的概念,并尽量用简单的语言解释清楚。
1. 项目(Project)与应用(App)
- 项目(Project):代表整个网站。它是一个容器,里面可以包含多个“应用”。
- 应用(App):代表网站中的一个具体功能模块,比如博客功能、用户登录系统、商品展示等。
通常来说:
- 一个项目 = 多个应用 + 全局设置 + 路由配置
举个例子: 如果你正在做一个电商平台,你可能会创建如下几个应用:
- 商品列表 (
products) - 用户注册登录 (
users) - 购物车和订单 (
cart)
2. URL路由(URL Routing)
URL路由就像一个地址簿,告诉浏览器访问某个网址时应该跳转到哪个页面或执行哪个函数。
举个简单的例子:
http://127.0.0.1:8000/blog/
这表示当用户访问 /blog/ 这个路径时,Django应该返回博客首页的内容。
3. 视图(View)
视图负责处理请求,生成响应内容。我们可以把它想象成网页的“大脑”。
例如,当你点击“联系我”页面时,Django会调用一个特定的视图函数,这个函数可能会连接数据库获取信息,或者直接返回一段HTML内容。
4. 模型(Model)
模型是用来描述数据的结构的类,通俗地讲,它是数据库表格的映射。
例如,你可以定义一个叫 Article 的模型类,表示一篇博客文章,它有标题、正文、发布日期等字段。
5. 模板(Template)
模板是用于生成HTML页面的文件。它可以动态渲染内容,比如显示文章标题、用户评论等等。
Django提供了一套自己的模板引擎,语法简单易懂。我们后面实战时会详细讲解。
6. 数据库(Database)
Django默认自带SQLite数据库,适合初学者使用。你也可以配置MySQL、PostgreSQL等专业数据库。
在项目开发初期,使用SQLite是非常合适的,不需要额外安装其他软件。
实战项目:搭建一个简易的博客网站
接下来我们将一步步创建一个简易的博客网站,实现如下功能:
✅ 显示首页
✅ 展示单篇博文
✅ 使用后台管理界面发布文章
让我们现在开始!
步骤一:创建Django项目
进入你之前创建的文件夹(如 my_first_django_project),在这个目录下执行命令创建项目:
django-admin startproject mysite
这时会生成一个名为 mysite 的文件夹,里面有以下几个重要文件:
manage.py:这是项目管理脚本,用来执行各种Django命令。mysite/settings.py:项目的全局配置文件。mysite/urls.py:URL路由配置。mysite/wsgi.py:用于部署网站的接口文件。
进入项目根目录运行服务器测试一下:
cd mysite
python manage.py runserver
浏览器访问 http://127.0.0.1:8000/,如果看到Django欢迎页,说明一切正常 ✅
步骤二:创建博客应用
我们来创建一个专门用于博客功能的应用。
回到 mysite 文件夹下(即包含 manage.py 的那一层),执行:
python manage.py startapp blog
这时会出现一个 blog 文件夹,里面包含了应用的基本结构:
blog/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py
步骤三:注册应用
为了让Django知道我们要启用这个应用,需要在项目的 settings.py 文件中注册它。
打开 mysite/settings.py,找到 INSTALLED_APPS 列表,在末尾加上 'blog.apps.BlogConfig':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig', # 添加这一行
]
保存后退出。
步骤四:定义模型 Model
我们来创建一个 Article 模型,用于表示每篇博客文章。
编辑 blog/models.py 文件,写入以下内容:
from django.db import models
from django.utils import timezone
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
这段代码定义了一个模型,它有三个字段:
title: 标题,最长200字符content: 正文内容published_date: 发布时间,默认为当前时间
保存后,我们需要告诉Django更新数据库结构:
python manage.py makemigrations blog
python manage.py migrate
这两条命令的作用是:先根据模型生成迁移脚本,然后应用到数据库中。
步骤五:创建管理员界面
Django有一个强大的内置后台管理页面,我们可以用它来添加、修改博客文章。
首先创建一个管理员账户:
python manage.py createsuperuser
输入用户名、邮箱和密码。
接下来注册 Article 模型到后台管理界面:
打开 blog/admin.py 文件,修改为如下内容:
from django.contrib import admin
from .models import Article
admin.site.register(Article)
启动服务器:
python manage.py runserver
打开浏览器访问 http://127.0.0.1:8000/admin/,用刚才设置的账号登录,你会看到文章管理界面,点击 ADD ARTICLE 可以添加新文章。
步骤六:创建视图 View 和 URL路由
我们要让访客可以浏览博客首页和单篇文章。
1. 编写视图函数
打开 blog/views.py,添加两个视图函数:
from django.shortcuts import render, get_object_or_404
from .models import Article
def home(request):
articles = Article.objects.all().order_by('-published_date')
return render(request, 'blog/home.html', {'articles': articles})
def article_detail(request, pk):
article = get_object_or_404(Article, pk=pk)
return render(request, 'blog/article_detail.html', {'article': article})
上面的代码做了什么?
home()函数:获取所有文章,并按照发布时间降序排列,传给模板。article_detail()函数:根据主键pk获取某一篇文章,传给详情页模板。
2. 创建URL路由
我们先在 blog 应用中创建 urls.py 文件(默认不自动生成):
在 blog/ 目录下新建文件 urls.py,写入以下内容:
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('article/<int:pk>/', views.article_detail, name='article-detail'),
]
接着,我们需要把博客应用的URL嵌入到项目的总路由中。
打开 mysite/urls.py,修改为如下内容:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')), # 新增这一行
]
这样就实现了路由的嵌套关系。
步骤七:编写模板 Template
Django模板存放在各个应用下的 templates/ 文件夹中。我们先在 blog 文件夹中创建模板目录结构。
目录结构如下:
blog/
└── templates/
└── blog/
├── home.html
└── article_detail.html
home.html 内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我的博客</title>
</head>
<body>
<h1>欢迎来到我的博客!</h1>
{% for article in articles %}
<h2><a href="{% url 'article-detail' pk=article.pk %}">{{ article.title }}</a></h2>
<p>{{ article.published_date }}</p>
{% endfor %}
</body>
</html>
article_detail.html 内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ article.title }}</title>
</head>
<body>
<h1>{{ article.title }}</h1>
<p>{{ article.published_date }}</p>
<div>
{{ article.content }}
</div>
</body>
</html>
步骤八:再次启动服务并查看效果
保存所有文件后,重启服务:
python manage.py runserver
访问 http://127.0.0.1:8000/,你应该可以看到首页列出你添加的文章。点击标题可以进入详情页,查看完整内容 ✅
常见问题:新手常问问题解答
Q1:安装Django失败怎么办?
可能原因:
- 网络问题导致下载失败
- pip版本太旧
解决办法: 升级pip:
python -m pip install --upgrade pip
使用镜像源加速:
pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple
Q2:访问不了本地服务器?
检查是否启动服务:
python manage.py runserver
确认控制台没有报错,然后尝试访问:
http://localhost:8000/
或者关闭防火墙重试。
Q3:视图函数无法显示页面?
请检查:
- 模板路径是否正确
- 模板命名是否一致(区分大小写)
- 是否在URL中正确定义路由
- 是否遗漏
render()函数
Q4:数据库操作错误?
运行如下命令重置迁移:
python manage.py makemigrations
python manage.py migrate
或者删除 db.sqlite3 文件重新运行迁移。
学习建议:下一步要学什么?
恭喜你完成了第一个Django项目 🎉!你现在掌握的知识已经足以让你开始开发简单的网站了。不过别急着止步于此,下面是进一步学习的建议:
1. 学习表单(Form)和提交功能
学会如何让用户通过网页提交数据,比如评论、注册、登录等。
2. 学习模板继承(Template Inheritance)
避免重复编写相同的HTML结构,提升开发效率。
3. 学习静态资源管理和CSS引入
美化你的网站页面,让它看起来更专业。
4. 学习使用真实数据库(如PostgreSQL/MySQL)
为将来上线做准备。
5. 部署项目上线
学习使用 gunicorn, nginx 或部署平台如 PythonAnywhere、Heroku。
结语:勇敢迈出第一步
作为一位刚起步的开发者,你可能会感到有些复杂和迷茫。但记住:每一个优秀的程序员都是从一个“Hello World”开始的。Django虽然功能强大,但它设计初衷就是为了简化开发流程,只要你保持耐心、持续练习,就能很快上手。
继续加油吧!也许下一个伟大的网站,就是你做的 😊
如果你觉得这篇文章对你有帮助,欢迎关注我后续的Django进阶教程系列!

评论 0