在 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'),
有什么方法可以简单地从 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'),