深度分析Django基础教程之Django初步体验
(一) 开篇:为什么是Django?你的“瑞士军刀”已上线
兄弟们,姐妹们,各位在代码世界里摸爬滚打的战友们!今天咱们不聊虚的,就来唠唠一个能让你在Web开发领域“支棱”起来的超级法宝——Django。
想象一下这个场景:产品经理又双叒叕提了新需求,要做一个带用户、带后台、带文章发布功能的网站,时间嘛……“最好明天给我看看原型”。此时的你,如果还在手写SQL、拼接HTML字符串、处理HTTP请求到头秃,那感觉,无异于用勺子去挖隧道——不是不行,是真™累啊!
而Django,就是那个瞬间递到你手里的“盾构机”。它自称是“为完美主义者 with deadlines(赶工期的完美主义者)”设计的框架,这话一点不假。它内置了太多“开箱即用”的玩意儿:用户认证、管理员后台、ORM(对象关系映射,说人话就是不用写SQL就能操作数据库)、表单处理……堪称Web开发界的“瑞士军刀”。
今天,咱们就来一次深度的“Django初体验”,我保证,过程比你想象中要丝滑和有趣得多!
(二) 环境准备:给你的电脑装上“魔法引擎”
在开始我们的魔法之前,得先准备好坩埚和魔杖。
- 安装Python:Django是Python的框架,所以你得先有Python(建议3.8以上版本)。去官网下一个,安装时记得勾选“Add Python to PATH”。
- 创建虚拟环境(强烈推荐):这就像给你的项目单独准备一个房间,不会和别的项目打架。打开你的命令行(Terminal或CMD),输入:
python -m venv mydjango_env
这创建了一个叫mydjango_env的虚拟房间。激活它:
-
- Windows:
mydjango_env\Scripts\activate - Mac/Linux:
source mydjango_env/bin/activate
激活后,命令行前面会出现(mydjango_env)的提示,恭喜,你已经进入“与世隔绝”的修炼状态。
- Windows:
- 安装Django:在虚拟环境里,一句命令搞定:
pip install django
(三) 初窥门径:创建你的第一个Django项目
好,魔法引擎启动!让我们创建一个项目。Django里的“项目”(Project),就像是你准备盖的小区,而里面的“应用”(App),就是小区里的一栋栋楼(比如1号楼是用户中心,2号楼是博客系统)。
创建项目,我们请出Django自带的管理工具django-admin:
django-admin startproject my_awesome_site
回车之后,一个名为my_awesome_site的文件夹就诞生了。进去看看结构:
my_awesome_site/
manage.py # 你的项目总管,很多命令都要通过它执行
my_awesome_site/ # 项目的核心配置目录
__init__.py
settings.py # 项目的“大脑”,所有设置都在这里
urls.py # 项目的“路由表”,决定哪个URL由哪个函数处理
asgi.py
wsgi.py # Web服务网关接口,和服务器打交道用的
现在,让我们启动开发服务器,看看Django的“Hello World”长啥样:
cd my_awesome_site
python manage.py runserver
访问 http://127.0.0.1:8000,你会看到一个火箭升空的页面!这意味着,你的Django项目已经成功运行了!是不是很有成就感?这个开发服务器自带热重载,你改代码,它自动重启,贴心到哭。
(四) 核心体验:手把手教你搭个迷你博客
光看火箭不过瘾,咱们来真格的,建一个最简单的博客,能发布、能显示文章那种。
第一步:创建“博客”这栋楼(App)
在项目根目录下(和manage.py同级),运行:
python manage.py startapp blog
又一个新文件夹blog出现了,里面包含了模型(models.py)、视图(views.py)等文件。一个项目可以由多个App组成,这种“高内聚、低耦合”的设计,让代码非常清晰。
第二步:设计“文章”的蓝图(Model)
我们要存储文章,就得先告诉数据库文章长什么样。打开blog/models.py,我们来定义“文章”这个模型:
from django.db import models
class Article(models.Model):
# 标题,字符字段,最大长度200
title = models.CharField(max_length=200)
# 正文,文本字段,不限长度
content = models.TextField()
# 创建时间,自动设置为文章创建的时间
created_time = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title # 这样在后台显示文章时,会显示标题而不是一堆Object
看,我们没用一句SQL,就用Python类的语法定义了一张数据库表。Django的ORM会在背后默默帮我们生成所有SQL语句,这就是它最大的魔力之一。
第三步:让Django知道我们的改动
我们创建了App,修改了Model,需要“登记”一下,让项目知道。
- 在项目配置文件
my_awesome_site/settings.py的INSTALLED_APPS列表里,添加我们的blog应用:
INSTALLED_APPS = [
...,
'blog', # 添加这一行
]
- 生成数据库迁移文件(相当于记录下你对数据库蓝图的修改):
python manage.py makemigrations
- 执行迁移,在数据库中真正创建表:
python manage.py migrate
第四步:开启“官方外挂”——管理员后台
Django最被称道的功能之一,就是它自带一个功能强大的管理员后台。我们只需要简单几步,就能拥有一个管理我们文章的后台。
首先,创建一个超级用户(后台的BOSS):
python manage.py createsuperuser
跟着提示输入用户名、邮箱和密码。
然后,告诉后台,我们的Article模型可以被管理。在blog目录下,有一个admin.py文件,把它改成:
from django.contrib import admin
from .models import Article # 从当前目录的models.py导入Article模型
# 注册Article模型,使其在管理员后台可见
admin.site.register(Article)
现在,重启服务器(如果关了的话),访问 http://127.0.0.1:8000/admin,用你刚创建的超级用户账号登录。
哇塞!一个现成的、漂亮的后台出现了!而且里面已经有我们的“Articles”了!点击进去,你就可以像在Word里一样,轻松地“增加”新的博客文章了。这种感觉,就像游戏里开局就送了一套神装,爽不爽?
第五步:从后台到前台:展示我们的文章
光能在后台写文章不行,我们得让用户在前台看到。这就涉及到Django的MVT模式中的 V(View,视图) 和 T(Template,模板)。
- 写视图(View):处理逻辑
打开blog/views.py,写一个函数,用来获取所有文章并传递给模板:
from django.shortcuts import render
from .models import Article # 导入Article模型
def article_list(request):
# 从数据库中获取所有的文章对象
articles = Article.objects.all().order_by('-created_time') # 按创建时间倒序排列
# 渲染模板,并把articles这个变量传递给模板
return render(request, 'blog/article_list.html', {'articles': articles})
- 创建模板(Template):负责展示
在blog目录下,新建一个templates文件夹,在里面再新建一个blog文件夹(防止模板名冲突),最后在里面创建一个article_list.html文件。
在这个HTML文件里,我们可以用Django的模板语言来动态显示数据:
<!DOCTYPE html>
<html>
<head>
<title>我的酷炫博客</title>
</head>
<body>
<h1>欢迎来到我的Django博客!</h1>
{% for article in articles %}
<div class="article">
<h2>{{ article.title }}</h2>
<p>{{ article.created_time }}</p>
<p>{{ article.content|truncatewords:20 }}</p> <!-- 只显示前20个单词 -->
<hr>
</div>
{% empty %}
<p>还没有发布任何文章哦~</p>
{% endfor %}
</body>
</html>
- 配置路由(URL):打通路径
最后一步,我们要告诉Django,当用户访问某个网址时,该调用哪个视图函数。
from django.urls import path
from . import views # 从当前目录导入views
urlpatterns = [
path('', views.article_list, name='article_list'), # 根路径就对应文章列表视图
]
from django.contrib import admin
from django.urls import path, include # 引入include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')), # 将博客应用的URL包含进来,根路径指向博客
]
-
- 先在
blogApp下创建一个urls.py文件: - 然后,在项目的总路由
my_awesome_site/urls.py里,包含我们App的路由:
- 先在
大功告成!
现在,访问 http://127.0.0.1:8000,你就能看到你刚刚在后台发布的文章,赫然显示在页面上!从一个空文件夹,到一个可以发布和展示内容的动态网站,我们只用了几个简单的步骤和几十行代码。
(五) 深度总结:Django体验到底“香”在哪儿?
回过头看,我们这次初体验到底经历了什么?
- “全家桶”式体验:从数据库ORM到管理员后台,从用户认证到表单处理,Django几乎为你准备好了一切。你不需要花几天时间去选型和集成各种第三方库,它能让你快速出活,这正是它“为赶工期而生”的精髓。
- MVT模式清晰:模型(Model)、视图(View)、模板(Template)各司其职,代码结构非常清晰,便于团队协作和后期维护。你写的不是一锅乱炖的“意大利面代码”,而是结构分明的“乐高积木”。
- 自动化与约定优于配置:数据库迁移、后台生成,这些繁琐的工作Django都帮你自动化了。你只需要遵循它的约定,就能享受到巨大的便利,把精力集中在业务逻辑本身。
- 安全感:Django自带了许多安全防护,比如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等,帮你挡掉了许多常见的Web攻击,让你睡得更加安稳。
当然,Django也不是没有缺点,比如它比较“重”,学习曲线前期稍陡,对于特别微型的API服务可能有点“杀鸡用牛刀”。但对于绝大多数中大型的、需要快速迭代的Web项目来说,它绝对是你的不二之选。
这次“初体验”就像一次新手教程,带你领略了Django核心的魔法。接下来,还有表单、用户系统、静态文件、部署等更多宝藏等你去挖掘。但无论如何,你已经成功入门,从一个看着命令行发呆的小白,变成了一个能用半天时间搭出Web应用的“潜力股”!
还等什么?快去创造你的下一个酷炫项目吧!
900

被折叠的 条评论
为什么被折叠?



