深度分析Django基础教程之Django初步体验:请求与响应的“灵魂交流”
伙计们,坐稳扶好了!今天我们要聊的,是每个Django初学者都必须经历的“成人礼”——理解请求和响应。这玩意儿听起来高大上,但其实说白了,就是一场发生在网络世界里的“社交尬聊”。
想象一下这个场景:
- 你(浏览器): 一个主动出击的帅小伙,走到心仪的女孩(服务器)面前,开口说了一句:“在吗?吃了吗?今天天气不错!”(这就是 请求 - HttpRequest)
- Django(服务器): 一个优雅又机智的小姐姐,她不能愣着啊,得立马回应你。她可能说:“吃了,吃了,我刚吃了火锅,爽歪歪!” 或者直接给你递上一张她的名片(一个网页)。(这就是 响应 - HttpResponse)
整个Web开发的核心,就是围绕着这对“一问一答”展开的。而Django,就是那个帮你把小姐姐(服务器端)训练得又聪明、又有礼貌的“社交大师课”。
第一幕:邂逅——“请求”小哥的自我介绍(HttpRequest)
当你在地址栏输入http://127.0.0.1:8000/hello并敲下回车的那个瞬间,一场跨越千山万水(其实可能就是你的本地电脑)的“网络奔现”就开始了。
这个“请求”小哥可不是空手来的,他带着一大堆“个人信息”,把自己打包成一个叫 HttpRequest 的对象,塞给了Django。Django小姐姐拿到这个对象,就像拆开一封求职信,里面啥都有:
request.method: 他的“搭讪方式”。是礼貌的“GET”(你好,能认识一下吗?),还是更直接的“POST”(这是我的个人资料,请收下!)。这决定了小姐姐要用哪种策略回应。request.GET或request.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函数是个“魔法师”。它做了三件事:
- 找到名为
hello.html的模板文件。 - 把我们在
context字典里准备的“数据颜料”(person_name和message)泼到模板上。 - 生成一个最终、完整的、充满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的“深度约会”,你是不是已经彻底搞懂了HttpRequest和HttpResponse那点事儿?它们不再是冰冷的技术名词,而是一次次充满趣味的网络对话的基石。
记住,所有花里胡哨的Web应用,无论是淘宝、微博还是知乎,本质上都是这个“一问一答”模型的超级加强版。你现在已经掌握了这个核心玩法!
所以,别怕,尽情去折腾你的Django小姐姐吧!让她帮你处理更复杂的表单(POST请求),连接数据库(Models),打造出属于你自己的、会跟全世界“聊天”的酷炫网站!
技术栈: Python, Django, HTML, CSS

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



