0Pricing
Python Academy · 课时

视图与 URL

将请求路由到视图

视图与 URL 是 CoddyKit 上的免费 Python Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

什么是视图

Django 视图是一个接收 Web 请求并返回 Web 响应的函数(或类)。视图包含页面逻辑,位于应用的 views.py 中。

from django.http import HttpResponse

def home(request):
    return HttpResponse('Hello, world!')
print('A view takes request, returns response')

request 参数

每个视图都会接收一个 request 对象,其中包含传入请求的详细信息:方法、GET/POST 数据、用户等。

from django.http import HttpResponse

def info(request):
    return HttpResponse('Method: ' + request.method)
print('request carries the incoming data')

URL 模式

应用的 urls.py 使用名为 urlpatterns 的列表和 path() 函数,将 URL 路径映射到视图。

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

urlpatterns = [
    path('', views.home),
]
print('path maps a URL to a view')

命名 URL

为模式设置一个 name,这样您就可以在其他地方引用它,而不必将路径硬编码。

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]
print("name='home' lets you reference it later")

URL 参数

使用 <int:post_id> 等转换器捕获 URL 的部分内容。捕获的值会传递给视图。

from django.urls import path
from . import views

urlpatterns = [
    path('post/<int:post_id>/', views.detail, name='detail'),
]
print('post/5/ -> detail(request, post_id=5)')

读取参数

捕获的值会作为关键字参数传入,其名称与转换器的名称相匹配。

from django.http import HttpResponse

def detail(request, post_id):
    return HttpResponse('Post ' + str(post_id))
print('View receives post_id')

引入应用 URL

项目的根 urls.py 使用 include() 引入每个应用的 URL 配置,从而保持路由的模块化。

# mysite/urls.py
from django.urls import path, include

urlpatterns = [
    path('blog/', include('blog.urls')),
]
print('include() wires up app urls')

渲染模板

render() 快捷函数会将模板与上下文字典结合起来,并返回一个 HttpResponse。

from django.shortcuts import render

def home(request):
    return render(request, 'home.html', {'name': 'Alice'})
print('render combines template + context')

404 辅助工具

get_object_or_404() 会获取对象;如果对象不存在,则引发 404。这是一种常见且安全的模式。

from django.shortcuts import get_object_or_404, render
from .models import Post

def detail(request, post_id):
    post = get_object_or_404(Post, id=post_id)
    return render(request, 'detail.html', {'post': post})
print('get_object_or_404 handles missing data')

反向解析 URL

在 Python 中,reverse('detail', args=[5]) 根据模式名称构建 URL。在模板中,{% url %} 标签执行相同的操作。

from django.urls import reverse
# reverse('detail', args=[5]) -> '/blog/post/5/'
# In a template: {% url 'detail' post.id %}
print('reverse builds URLs from names')

基于类的视图

Django 还提供了 基于类的视图,例如 ListView 和 DetailView,用更少的代码处理常见模式。

from django.views.generic import ListView
from .models import Post

class PostList(ListView):
    model = Post
print('ListView lists objects automatically')

快速检查

测试您对视图和 URL 的掌握情况。

总结

您学会了将请求路由到视图。

  • 视图接收 request 并返回响应
  • urlpatterns + path() 将 URL 映射到视图,也可以选择设置 name
  • <int:id> 等转换器可以捕获 URL 的部分内容
  • include() 用于连接应用 URL;render() 和 get_object_or_404() 是实用的快捷函数

常见问题解答

「视图与 URL」课时是免费的吗?

是的 — 「视图与 URL」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「视图与 URL」这节课中我会学到什么?

将请求路由到视图 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「视图与 URL」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 项目与应用
  2. 模型与迁移
  3. 视图与 URL
  4. Django 管理后台
← 返回 Python Academy