在 Django 中从 urls.py 输出文本

Outputing text from urls.py in Django

有什么方法可以简单地从 urls.py 输出文本(不是 HTML)而不是调用函数(在 views.py 或其他情况下)?

urlpatterns = patterns('',
    url(r'^$', "Hello World"),
)

不,当然。 url 必须将模式映射到可调用对象,并且此可调用对象必须接受 HttpRequest 作为第一个参数,并且 return 和 HttpResponse.

您可以做的更接近的事情是将模式映射到 lambda(匿名函数),即:

from django.http import HttpResponse

urlpatterns = patterns('',
    url(r'^$', lambda request: HttpResponse("Hello World", content_type="text/plain")),
)

但我绝对不会认为这是一种好的做法。

url 函数需要一个可调用函数,所以类似于

rlpatterns = patterns('',
    url(r'^$', lambda req:HttpResponse("Hello World")),
)

会起作用。但是,除了让您的 urls.py 更难阅读之外,这样做实际上没有任何好处。

首先,你应该考虑你是否真的想要这个。如果需要它(我从来不需要这样做,这些年来我已经编写了相当多的 Django 应用程序),你可以将它包装成更紧凑的东西,例如

请注意,将字符串直接传递给 url 会将其视为方法名称。

def static_text(s):
    return lambda req:HttpResponse(s)

rlpatterns = patterns('',
    url(r'^$', static_text("Hello World")),
)

对于 Django 2.2 及更高版本

path('', lambda request: HttpResponse("Hello World", content_type="text/plain"), name='home'),