Django:将URL参数传递给app URL处理程序

时间:2015-06-19 09:24:58

标签: python django python-3.x

我正在尝试按照“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视图?

1 个答案:

答案 0 :(得分:1)

正如评论所指出的那样,问题是您的项目级别模式包含include但在使用placeholder时不应该。

  

项目级拦截的参数是否会传输到app-level urls.py以转移到占位符视图?

是的,他们会的。不,你不应该这样做。这使得阅读/理解网址变得困难。它还要求所有包含url / views的应用程序级别都接受高度/宽度参数。目前,您的placeholder/urls.py应用中只有一个视图,但如果您添加了另一个不接受这些参数的视图并将其包含在connect中,则会以意外方式中断。