Django基础教程(十一)Django初步体验之Django的请求和响应:别拦我!我要和Django来个第一次“亲密接触”:请求与响应,从入门到上头

深度分析Django基础教程之Django初步体验:请求与响应的“灵魂交流”

伙计们,坐稳扶好了!今天我们要聊的,是每个Django初学者都必须经历的“成人礼”——理解请求和响应。这玩意儿听起来高大上,但其实说白了,就是一场发生在网络世界里的“社交尬聊”。

想象一下这个场景:

  • 你(浏览器): 一个主动出击的帅小伙,走到心仪的女孩(服务器)面前,开口说了一句:“在吗?吃了吗?今天天气不错!”(这就是 请求 - HttpRequest
  • Django(服务器): 一个优雅又机智的小姐姐,她不能愣着啊,得立马回应你。她可能说:“吃了,吃了,我刚吃了火锅,爽歪歪!” 或者直接给你递上一张她的名片(一个网页)。(这就是 响应 - HttpResponse

整个Web开发的核心,就是围绕着这对“一问一答”展开的。而Django,就是那个帮你把小姐姐(服务器端)训练得又聪明、又有礼貌的“社交大师课”。

第一幕:邂逅——“请求”小哥的自我介绍(HttpRequest)

当你在地址栏输入http://127.0.0.1:8000/hello并敲下回车的那个瞬间,一场跨越千山万水(其实可能就是你的本地电脑)的“网络奔现”就开始了。

这个“请求”小哥可不是空手来的,他带着一大堆“个人信息”,把自己打包成一个叫 HttpRequest 的对象,塞给了Django。Django小姐姐拿到这个对象,就像拆开一封求职信,里面啥都有:

  • request.method 他的“搭讪方式”。是礼貌的“GET”(你好,能认识一下吗?),还是更直接的“POST”(这是我的个人资料,请收下!)。这决定了小姐姐要用哪种策略回应。
  • request.GETrequest.POST 他随身携带的“小纸条”。比如在搜索时?q=Django,这个q=Django就是GET方式带来的小纸条。而当你填写登录表单点击提交时,用户名和密码就是POST方式带来的“机密文件”。
  • request.path 他想要找的“具体的人”。比如/hello,他就明确表示:“我找Hello小姐,不找Goodbye先生。” 这就是我们常说的路由(URLconf),Django靠这个来判断该派谁出来接待。

所以,Django要做的第一件事,就是当个“前台接待”,看看这位请求小哥的path,然后翻出公司的“通讯录”(urls.py),找到对应的“负责人”(视图函数 - View)。

第二幕:交锋——“视图”函数的内心戏(View)

视图函数,就是Django应用里的“业务骨干”,是真正处理逻辑、决定如何回应的“大脑”。它接收请求小哥的HttpRequest对象作为参数,然后开始一通操作,最后必须返回一个HttpResponse对象。

这个过程,充满了各种“内心戏”:

戏精模式1:“直男式”回应

# views.py
from django.http import HttpResponse

def say_hello(request): # request就是那个请求对象
    # 内心OS:没啥好说的,直接回一句话完事儿。
    return HttpResponse(“嘿,兄弟,我收到了你的请求!”)

这是最简单、最原始的回应。就像别人问你“吃了吗?”,你回一句“吃了”。对话成立,但略显枯燥。

戏精模式2:“查户口式”回应

# views.py
from django.http import HttpResponse

def say_hello(request):
    # 内心OS:我先看看你叫什么名字。
    name = request.GET.get(‘name’, ‘陌生的朋友’) # 尝试从GET参数里获取‘name’
    # 然后带着名字一起回应。
    return HttpResponse(f“<h1>嘿,{name}!很高兴认识你!</h1>”)

这下高级了!小姐姐学会了看对方带来的“小纸条”(GET参数)。如果你访问http://127.0.0.1:8000/hello?name=Python小菜鸡,她就会亲切地喊出你的名字。看,交互性来了!

戏精模式3:“灵魂画手式”回应(渲染模板)
光是返回字符串,就像只靠发短信谈恋爱,太没劲了。得会发“表情包”、发“精美照片”啊!在Web世界里,这个就是HTML页面

直接往HttpResponse里塞大段HTML字符串?太不优雅了!我们是体面人。Django提供了强大的模板系统(Template),让我们能像玩拼图一样制作网页。

# views.py
from django.shortcuts import render # 导入渲染工具!
from django.http import HttpResponse

def say_hello(request):
    name = request.GET.get(‘name’, ‘陌生的朋友’)
    context = {
        ‘person_name’: name,
        ‘message’: ‘今天也是充满希望的一天!’
    }
    # 内心OS:我要找一个漂亮的HTML模板(template),把数据塞进去,生成一个华丽的回应!
    return render(request, ‘hello.html’, context)

这里,render函数是个“魔法师”。它做了三件事:

  1. 找到名为hello.html的模板文件。
  2. 把我们在context字典里准备的“数据颜料”(person_namemessage)泼到模板上。
  3. 生成一个最终、完整的、充满HTML标签的HttpResponse对象。

那么,这个叫hello.html的“表情包”长啥样呢?

<!-- 在 templates/hello.html 文件中 -->
<!DOCTYPE html>
<html>
<head>
    <title>Django小姐姐的问候</title>
</head>
<body>
    <h1>你好啊,{{ person_name }}!</h1>
    <p>{{ message }}</p>
    <img src=“https://media.giphy.com/media/LMt9638dO8dftAjtco/giphy.gif" alt=“开心”>
</body>
</html>

注意看{{ person_name }}{{ message }},这就是模板里的“占位符”。魔法师render会把它们替换成我们传过来的真实数据。最终呈现在浏览器里的,就是一个有标题、有段落、有动图的、活生生的网页!

终章:圆满大结局——一个完整的“土味情话”示例

理论说得再多,不如亲手搞一下。来,让我们搭建一个极简的“Django土味情话生成器”,把上面所有知识串起来!

第一步:创建项目和应用(搭建舞台)

django-admin startproject love_talk
cd love_talk
python manage.py startapp talk_app

第二步:配置路由(分派接待员)
首先,在项目总的love_talk/urls.py里,把流量引到我们的talk_app

# love_talk/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path(‘admin/’, admin.site.urls),
    path(‘’, include(‘talk_app.urls’)), # 所有访问根路径的,都去找talk_app的urls.py
]

然后,在应用里创建talk_app/urls.py文件,并指定谁来处理。

# talk_app/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path(‘’, views.generate_talk, name=‘home’), # 访问根路径,就由generate_talk视图处理
]

第三步:编写视图(设计对话内容)

# talk_app/views.py
from django.shortcuts import render
import random

def generate_talk(request):
    # 一个土味情话库
    talk_lines = [
        “你知道我的缺点是什么吗? 缺点你。”,
        “我最近有点忙。忙什么?忙着喜欢你。”,
        “你可以帮我个忙吗?什么忙?帮忙快点爱上我。”,
        “我怀疑你的本质是一本书。为什么?不然为什么我越看越想睡。”,
    ]
    
    # 随机选一条情话
    selected_talk = random.choice(talk_lines)
    
    # 准备数据
    context = {
        ‘pickup_line’: selected_talk,
    }
    
    # 渲染模板并返回
    return render(request, ‘talk.html’, context)

第四步:编写模板(设计对话界面)
talk_app目录下创建templates/talk.html文件。

<!DOCTYPE html>
<html>
<head>
    <title>Django土味情话生成器</title>
    <style>
        body { font-family: Arial; text-align: center; padding: 50px; }
        .talk-box { border: 2px dashed #ff69b4; padding: 20px; margin: 20px auto; max-width: 500px; }
        button { padding: 10px 20px; background-color: #ff69b4; color: white; border: none; cursor: pointer; }
    </style>
</head>
<body>
    <h1>💖 你的专属Django情话已到货 💖</h1>
    <div class=“talk-box”>
        <p>{{ pickup_line }}</p>
    </div>
    <p><small>(每次刷新页面,都会获得一句新情话哦~)</small></p>
    <button onclick=“window.location.reload()”>再来一句!</button>
</body>
</html>

第五步:运行!

python manage.py runserver

打开http://127.0.0.1:8000,疯狂点击“再来一句!”按钮吧!

你看,这就是一次完整的“请求-响应”循环。你点击链接或刷新页面(发出GET请求)-> Django根据urls.py找到generate_talk视图 -> 视图随机选择一条情话,准备好数据 -> 使用talk.html模板渲染出漂亮的HTML页面 -> 将这个页面作为 HTTP响应 发回给你的浏览器。

结语:从“Hello World”到“Hello World Wide Web”

通过这次和Django的“深度约会”,你是不是已经彻底搞懂了HttpRequestHttpResponse那点事儿?它们不再是冰冷的技术名词,而是一次次充满趣味的网络对话的基石。

记住,所有花里胡哨的Web应用,无论是淘宝、微博还是知乎,本质上都是这个“一问一答”模型的超级加强版。你现在已经掌握了这个核心玩法!

所以,别怕,尽情去折腾你的Django小姐姐吧!让她帮你处理更复杂的表单(POST请求),连接数据库(Models),打造出属于你自己的、会跟全世界“聊天”的酷炫网站!

技术栈: Python, Django, HTML, CSS

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

值引力

持续创作,多谢支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值