Django基础教程(十)Django初步体验:码农的逆袭:Django初体验,从“Hello World”到半天搞个博客!

深度分析Django基础教程之Django初步体验

(一) 开篇:为什么是Django?你的“瑞士军刀”已上线

兄弟们,姐妹们,各位在代码世界里摸爬滚打的战友们!今天咱们不聊虚的,就来唠唠一个能让你在Web开发领域“支棱”起来的超级法宝——Django

想象一下这个场景:产品经理又双叒叕提了新需求,要做一个带用户、带后台、带文章发布功能的网站,时间嘛……“最好明天给我看看原型”。此时的你,如果还在手写SQL、拼接HTML字符串、处理HTTP请求到头秃,那感觉,无异于用勺子去挖隧道——不是不行,是真™累啊!

而Django,就是那个瞬间递到你手里的“盾构机”。它自称是“为完美主义者 with deadlines(赶工期的完美主义者)”设计的框架,这话一点不假。它内置了太多“开箱即用”的玩意儿:用户认证、管理员后台、ORM(对象关系映射,说人话就是不用写SQL就能操作数据库)、表单处理……堪称Web开发界的“瑞士军刀”。

今天,咱们就来一次深度的“Django初体验”,我保证,过程比你想象中要丝滑和有趣得多!

(二) 环境准备:给你的电脑装上“魔法引擎”

在开始我们的魔法之前,得先准备好坩埚和魔杖。

  1. 安装Python:Django是Python的框架,所以你得先有Python(建议3.8以上版本)。去官网下一个,安装时记得勾选“Add Python to PATH”。
  2. 创建虚拟环境(强烈推荐):这就像给你的项目单独准备一个房间,不会和别的项目打架。打开你的命令行(Terminal或CMD),输入:
python -m venv mydjango_env

这创建了一个叫mydjango_env的虚拟房间。激活它:

    • Windows: mydjango_env\Scripts\activate
    • Mac/Linux: source mydjango_env/bin/activate
      激活后,命令行前面会出现(mydjango_env)的提示,恭喜,你已经进入“与世隔绝”的修炼状态。
  1. 安装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,需要“登记”一下,让项目知道。

  1. 在项目配置文件my_awesome_site/settings.pyINSTALLED_APPS列表里,添加我们的blog应用:
INSTALLED_APPS = [
    ...,
    'blog',  # 添加这一行
]
  1. 生成数据库迁移文件(相当于记录下你对数据库蓝图的修改):
python manage.py makemigrations
  1. 执行迁移,在数据库中真正创建表:
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,模板)

  1. 写视图(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})
  1. 创建模板(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>
  1. 配置路由(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体验到底“香”在哪儿?

回过头看,我们这次初体验到底经历了什么?

  1. “全家桶”式体验:从数据库ORM到管理员后台,从用户认证到表单处理,Django几乎为你准备好了一切。你不需要花几天时间去选型和集成各种第三方库,它能让你快速出活,这正是它“为赶工期而生”的精髓。
  2. MVT模式清晰:模型(Model)、视图(View)、模板(Template)各司其职,代码结构非常清晰,便于团队协作和后期维护。你写的不是一锅乱炖的“意大利面代码”,而是结构分明的“乐高积木”。
  3. 自动化与约定优于配置:数据库迁移、后台生成,这些繁琐的工作Django都帮你自动化了。你只需要遵循它的约定,就能享受到巨大的便利,把精力集中在业务逻辑本身。
  4. 安全感:Django自带了许多安全防护,比如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等,帮你挡掉了许多常见的Web攻击,让你睡得更加安稳。

当然,Django也不是没有缺点,比如它比较“重”,学习曲线前期稍陡,对于特别微型的API服务可能有点“杀鸡用牛刀”。但对于绝大多数中大型的、需要快速迭代的Web项目来说,它绝对是你的不二之选。

这次“初体验”就像一次新手教程,带你领略了Django核心的魔法。接下来,还有表单、用户系统、静态文件、部署等更多宝藏等你去挖掘。但无论如何,你已经成功入门,从一个看着命令行发呆的小白,变成了一个能用半天时间搭出Web应用的“潜力股”!

还等什么?快去创造你的下一个酷炫项目吧!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值