我正在尝试按照“Lightweight Django”一书进行操作,在第2章中,Django应用程序拦截项目级urls.py
中的URL并调用视图placeholder
:
url(r'^image/(?P<width>[0-9]+)x(?P<height>[0-9]+)/$',
placeholder)
其中placeholder
是项目级views.py
中存在的视图。
我尝试以不同方式组织项目,以便在项目级拦截的URL传递到应用级picture_server/urls.py
,其中picture_server
是应用的名称。
url(r'^image/(?P<width>[0-9]+)x(?P<height>[0-9]+)/$', include(picture_server.urls))
然后将其传递给应用级视图函数picture_server/views.py
,其中包含视图:
def placeholder(request, width, height):
return(HttpResponse('Ok'))
我不确定的是,如何在picture_server/urls.py
中编写网址处理,以便使用正确的参数调用placeholder
视图:
url(r'^$', views.placeholder)
项目级拦截的参数是否会传输到应用级urls.py
以转移到placeholder
视图?
答案 0 :(得分:1)
正如评论所指出的那样,问题是您的项目级别模式包含include
但在使用placeholder
时不应该。
项目级拦截的参数是否会传输到app-level urls.py以转移到占位符视图?
是的,他们会的。不,你不应该这样做。这使得阅读/理解网址变得困难。它还要求所有包含url / views的应用程序级别都接受高度/宽度参数。目前,您的placeholder/urls.py
应用中只有一个视图,但如果您添加了另一个不接受这些参数的视图并将其包含在connect
中,则会以意外方式中断。