四个新的快捷键

作者:Adrian Holovaty 发表于 2005年9月24日

我们添加了四个新的快捷键,可以帮助你在 Django 应用中使用更少的代码。每个快捷键都旨在用一行代码表达一种常见的习惯用法。

第一个习惯用法是这样的

from django.core import template, template_loader
from django.utils.httpwrappers import HttpResponse
def foo_view(request):
    t = template_loader.get_template('foo/foo_detail')
    c = template.Context({'foo': 'bar'})
    return HttpResponse(t.render(c))

如果你是一位 Django 开发者,你可能用过与此非常相似的东西:加载一个模板,用上下文填充它,并返回一个HttpResponse以及渲染后的模板。因为这太常见了,所以我们添加了一个快捷键render_to_response()。以下是重写的相同代码

from django.core.extensions import render_to_response
def foo_view(request):
    return render_to_response('foo/foo_detail', {'foo': 'bar'})

我们还添加了render_to_string(),它与render_to_response()的功能相同,但返回的是字符串而不是HttpResponse.

。这是一个在 Django 代码中非常常见的第二个习惯用法

from django.core.exceptions import Http404
from django.models.bar import foos
try:
    f = foos.get_object(some_field__exact=some_lookup)
except foos.FooDoesNotExist:
    raise Http404

我们引入了get_object_or_404()将这个常见的情况简化为一行代码。以下是重写的相同代码

from django.core.extensions import get_object_or_404
from django.models.bar import foos
f = get_object_or_404(foos, some_field__exact=some_lookup)

还有一个get_list_or_404(),它的工作方式相同,但使用get_list()而不是get_object().

我们已经更新了文档,在示例中使用此新方法。

最后,在这两个示例中,旧代码(冗长地编写内容)仍然有效。

返回顶部