Django入门教程:搭建你的第一个Python网站

王秀珍_前端
2025-06-19 15:48
阅读 703

开篇:Django是什么,用来做什么?

开篇:Django是什么,用来做什么?

在我们开始学习具体的编程知识之前,先来了解一下Django到底是什么。简单来说,Django是一个用Python语言开发的Web框架,它就像是一套“网页建造工具包”,帮助你更高效地搭建一个功能完整的网站。

想象一下你要盖房子,如果没有工具和图纸,可能会花很多时间从头开始设计和制作各种零件。而有了Django这个“施工队”,你可以直接使用现成的结构、模板和组件,快速构建出功能完善的网站。

Django可以用来做哪些事情呢?以下是几个常见应用场景:

  • 博客系统:用户可以发布文章、评论、点赞等。
  • 在线商店:展示商品信息、处理订单、管理库存。
  • 社交平台:注册登录、发布动态、添加好友。
  • 企业官网:展示公司介绍、新闻、联系方式等静态页面。

总之,只要你需要用到后端功能(比如用户注册、数据库存储、页面动态交互等),Django都非常适合。而且由于它是基于Python开发的,对于初学者来说非常友好——Python本身就是一门语法简洁、易于上手的编程语言。

接下来,我们就一步步带着你走进Django的世界,手把手教你搭建属于自己的第一个网站!


环境准备:安装Python、Django与虚拟环境

环境准备:安装Python、Django与虚拟环境

在开始写代码之前,我们首先需要准备好开发所需的环境。别担心,这一步其实并不复杂,只要按照下面的步骤一步一步操作,你就能成功搭建好Django开发环境。

1. 安装 Python

Django是用Python写的,所以我们要先安装Python。

  • 前往官网下载安装包:https://www.python.org/downloads/
  • 根据你的操作系统选择对应版本(建议选择3.x系列)。
  • 在安装过程中勾选【Add Python to PATH】,这样方便后续操作。

安装完成后,在命令行中输入:

python --version

如果你看到类似这样的输出:

Python 3.9.7

说明Python已经安装成功了 ✅

💡 注意:如果你是Mac用户,macOS系统一般自带Python2,但我们需要的是Python3。可以使用Homebrew安装最新版:

brew install python

2. 安装 pip(Python包管理器)

pip 是用来安装Python库的工具,默认情况下Python安装时会自动安装pip。

验证是否已安装pip:

pip --version

输出示例:

pip 21.2.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

如果提示找不到命令,请参考官方文档重新安装或升级pip:

https://pip.pypa.io/en/stable/installation/

3. 创建虚拟环境(推荐)

为了避免不同项目之间的依赖冲突,我们推荐使用虚拟环境(virtual environment)。它可以为每个项目创建一个独立的“小空间”。

安装并使用 venv 模块(Python3内置):

python -m venv myenv    # 创建名为 myenv 的虚拟环境
source myenv/bin/activate   # Linux/macOS
myenv\Scripts\activate      # Windows

激活之后你会看到终端前缀变成:

(myenv) $

表示你现在在虚拟环境中工作了 ✅

4. 安装 Django

终于到了关键一步!现在我们通过pip来安装Django:

pip install django

验证是否安装成功:

django-admin --version

输出示例:

4.1.5

恭喜你,Django环境已经搭建完成啦!


核心概念:理解Django的三大核心模块

Django虽然强大,但它的结构非常清晰,主要包括三个核心部分:M(模型)、T(模板)、V(视图)。这三者分工明确,分别负责数据存储、页面展示和逻辑处理。下面我们就一一介绍它们的作用,并配以简单的代码示例。

数据库设计模型-2


M:Model —— 数据库模型

Model 是用来定义数据表结构的。

我们可以把它理解为一个电子表格的设计图,比如一个用户表可能包括用户名、邮箱、注册时间等等字段。

举个例子:你想做一个博客网站,你需要一张叫 Post 的数据表,包含标题和内容两个字段。

# 文件名:blog/models.py

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    
    def __str__(self):
        return self.title

这段代码的意思是:我们定义了一个叫做 Post 的类(也就是数据表),其中有两个字段:

  • title 是字符串类型,最大长度是200个字符;
  • content 是文本类型,没有长度限制;
  • __str__ 方法用于在后台显示时展示标题。

🧠 新手小贴士:写完model后记得运行以下两条命令让Django根据你的代码生成对应的数据库表:

python manage.py makemigrations
python manage.py migrate

T:Template —— 页面模板

Template 用来控制HTML页面的结构和样式。

我们可以把模板看作是一个“网页空壳子”,它里面的内容可以根据后台传递的数据动态填充。

例如,我们想在首页展示所有博客文章的标题列表:

<!-- 文件名:templates/post_list.html -->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>博客列表</title>
</head>
<body>
    <h1>我的博客文章</h1>
    <ul>
        {% for post in posts %}
            <li>{{ post.title }}</li>
        {% endfor %}
    </ul>
</body>
</html>

在这段代码中:

  • {% for post in posts %} 是一个循环语句,意思是遍历所有文章;
  • {{ post.title }} 表示把文章的标题填入到页面中;
  • 整个HTML文件就是一个模板文件,将来会被视图调用渲染。

V:View —— 视图函数

View 用来处理请求并返回响应(如页面、JSON等)。

你可以把它理解为一个“中间人”——当用户访问某一页的时候,View负责去查找数据,并调用模板生成最终页面。

继续上面的例子:用户访问 /posts/ 路径,希望看到所有的文章列表。

# 文件名:blog/views.py

from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.all()  # 从数据库中取出所有文章对象
    return render(request, 'post_list.html', {'posts': posts})

解释一下:

  • request 是用户的请求;
  • Post.objects.all() 是数据库查询语句,意思是获取所有文章;
  • render() 是一个函数,它的作用是将 post_list.html 模板渲染出来,并传入变量 posts

小结:MVT结构简述

缩写 中文名 作用
M(Model) 模型 定义数据库表结构,存储和操作数据
V(View) 视图 接收请求,处理逻辑,调用模板
T(Template) 模板 显示页面内容,负责前端展示

这三者配合,就能完成一个动态网页的展示啦!是不是很简单?


实战项目:从零开始搭建一个博客网站

现在我们已经掌握了Django的基本概念,接下来就开始动手实践吧!我们将一步步搭建一个最简单的博客网站,包括:

  1. 创建新项目和应用
  2. 配置数据库模型
  3. 添加管理界面
  4. 编写视图和模板
  5. 设置URL路由
  6. 启动服务器预览效果

让我们开始吧!


第一步:创建Django项目和应用

在一个干净的虚拟环境中,执行以下命令创建一个新的Django项目:

django-admin startproject mysite
cd mysite

接下来,创建一个应用,我们命名为 blog

python manage.py startapp blog

打开 mysite/settings.py,在 INSTALLED_APPS 中添加 'blog'

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',  # 新增这一行
]

第二步:编写模型(Model)

修改 blog/models.py 文件,定义文章模型:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('发布日期', auto_now_add=True)
    
    def __str__(self):
        return self.title

然后运行数据库迁移命令:

python manage.py makemigrations
python manage.py migrate

第三步:注册模型到管理界面

为了让管理员可以通过Django后台添加文章,我们需要注册我们的模型。

打开 blog/admin.py

from django.contrib import admin
from .models import Post

admin.site.register(Post)

运行服务器:

python manage.py runserver

打开浏览器访问 http://127.0.0.1:8000/admin,用前面创建的超级用户账号登录后,就可以添加文章啦!


第四步:编写视图(View)

打开 blog/views.py,添加一个视图函数来显示所有文章:

from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.all()
    return render(request, 'post_list.html', {'posts': posts})

第五步:创建模板(Template)

blog 应用目录下新建一个 templates 文件夹,并创建 post_list.html

mysite/
└── blog/
    └── templates/
        └── post_list.html

写入如下内容:

<!DOCTYPE html>
<html>
<head>
    <title>我的博客</title>
</head>
<body>
    <h1>文章列表</h1>
    <ul>
        {% for post in posts %}
            <li>{{ post.title }}</li>
        {% empty %}
            <li>还没有文章哦。</li>
        {% endfor %}
    </ul>
</body>
</html>

第六步:配置URL路由

打开 mysite/urls.py,添加对 post_list 视图的路由:

from django.urls import path
from blog.views import post_list

urlpatterns = [
    path('admin/', admin.site.urls),
    path('posts/', post_list, name='post_list'),  # 新增这条
]

第七步:运行服务器查看效果

再次启动服务器:

python manage.py runserver

访问 http://127.0.0.1:8000/posts/,你应该能看到一个空白的列表。

回到后台,添加几篇测试文章,刷新页面就能看到它们啦 ✅


常见问题解答:新手最容易遇到的问题及解决方案

在学习过程中,难免会遇到一些问题。下面列举了一些新手常问的问题和解决办法,帮你少走弯路。


问题1:安装Django时报错怎么办?

错误示例:

ERROR: Could not find a version that satisfies the requirement django (from versions: none)
ERROR: No matching distribution found for django

可能原因与解决方法:

  • 网络问题:请检查你的网络连接,尝试使用代理或换源安装。

    使用豆瓣镜像加速安装:

    pip install django -i https://pypi.douban.com/simple
    
  • pip版本过低:更新pip试试:

    pip install --upgrade pip
    

问题2:运行服务时报错“No module named ‘blog’”

错误信息:

ModuleNotFoundError: No module named 'blog'

原因分析:

可能是你在创建应用后忘记将其添加到 INSTALLED_APPS 中。

解决方法:

打开 settings.py 文件,找到 INSTALLED_APPS 列表,添加 'blog' 到其中。


问题3:访问页面出现404错误

情况描述:

当你输入某个URL地址访问页面,却收到404 Not Found错误。

可能原因:

  1. URL路径配置不正确;
  2. View函数未定义或拼写错误;
  3. 路由没有导入对应的视图函数。

排查建议:

  • 检查 urls.py 中的路径是否正确;
  • 查看视图函数名称是否一致;
  • 确保导入了正确的函数或模块。

问题4:数据库迁移失败

错误信息:

django.db.utils.OperationalError: no such table: blog_post

可能原因:

未执行数据库迁移命令导致表不存在。

解决方法:

运行以下命令生成数据库表:

python manage.py makemigrations
python manage.py migrate

问题5:中文乱码或无法保存中文内容

问题表现:

后台输入中文标题或内容,保存后出现乱码或报错。

解决方法:

确保数据库支持中文编码。如果是SQLite,默认就支持,无需额外设置;如果是MySQL,则需要检查数据库的字符集是否为 utf8mb4,并在 settings.py 中配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_db_name',
        'USER': 'root',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'charset': 'utf8mb4',
        },
    }
}

问题6:运行服务器时报端口被占用

错误信息:

Error: That port is already in use.

解决办法:

  • 更换端口号运行:

    python manage.py runserver 8001
    
  • 或者终止占用该端口的进程,再重启。


学习建议:下一步该学什么?

恭喜你完成了第一个Django项目!接下来的学习方向可以从以下几个方面继续深入:


1. 学习更多关于模板的知识

  • 模板继承({% extends %}
  • 包含其他模板({% include %}
  • 自定义模板标签和过滤器

这些内容能让你更好地组织HTML页面,提升可维护性。


2. 使用Django Forms提交数据

学会如何创建表单让用户输入数据(如发表评论、注册账户),并通过View进行处理。

推荐阅读:Django Forms官方文档


3. 理解前后端分离,尝试结合REST Framework

掌握前后端分离架构,使用 Django REST Framework 构建API接口,为未来开发小程序、APP或Vue/React项目打下基础。


4. 学会使用静态文件和媒体文件(CSS/JS/图片)

熟悉如何加载静态资源,实现更美观的页面展示。


5. 尝试部署上线项目

学习使用 Gunicorn + Nginx 部署网站,或将项目托管到云服务器(如阿里云、腾讯云、Heroku等)。


结束语:坚持就是胜利

服务器部署方案-1

Django看似庞大,但它每一个部分都很有条理,只要你愿意动手敲代码、不断尝试,很快就能上手。记住一句话:“程序员不是天生就会的,而是写出来的。”

希望这篇教程能为你打开通往Django世界的大门,也期待你能做出属于自己的精彩网站!如果你喜欢这篇文章,欢迎点赞、收藏或分享给身边的小伙伴。我们一起加油💪

如有任何问题,欢迎留言讨论~

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝