从Django中的urls.py输出文本

时间:2015-07-21 12:16:31

标签: python django django-urls

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

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

3 个答案:

答案 0 :(得分:10)

不,绝对。 url必须将模式映射到可调用对象,并且此可调用对象必须接受HttpRequest作为第一个参数并返回HttpResponse

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

from django.http import HttpResponse

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

但我绝对不会认为这是一种好习惯。

答案 1 :(得分:2)

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")),
)

答案 2 :(得分:1)

对于Django 2.2及更高版本

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