有什么方法可以简单地从urls.py输出文本(而不是HTML)而不是调用函数(在views.py或其他方面)?
urlpatterns = patterns('',
url(r'^$', "Hello World"),
)
答案 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'),