0

嗨,很高兴从 rails 转移到 django,但遇到了麻烦。

以下是我的网址和相应视图的操作。当两个 url 都启用时,PublisherDomain 会破坏 PublishersSingle(页面是可访问的,但不能呈现内容。但是,当 PublisherDomain 代码被注释掉时,PublishersSingle 可以工作并呈现正确的内容。我的问题是:导致这种超越和中断的错误是什么?我粘贴了我认为有问题的元素。

网址.py

url(r'^publishers/(?P<domain>.*)/$', 'firm.views.PublisherDomain'),
url(r'^publishers/(?P<domain>.*)/(?P<period>.*)/$', 'firm.views.PublishersSingle'),

视图.py

def PublisherDomain(request, domain):
   return render_to_response()

def PublisherSingle(request, domain, period):
   return render_to_response.
4

2 回答 2

3

问题是你的正则表达式。在您的匹配组(?P<domain>.*)中,.*匹配 0 个或多个任意字符,包括正斜杠。这意味着您的第一个 URL 模式匹配/publishers/domain/period/,因此请求由您的 PublisherDomain 视图而不是 PublisherSingle 处理。

更常见的正则表达式是(?P<domain>[\w-]+),它将匹配一个或多个大写字母 AZ、小写 az、数字 0-9、连字符或下划线。

顺便说一句,请考虑遵循 python 约定并命名您的视图函数publisher_domainpublisher_single. 对于 python 程序员来说,这个名字PublisherDomain看起来像一个类,而不是一个函数。

于 2013-08-15T22:42:22.973 回答
0

如果人们正在寻找特定示例,这是我使用的代码

publishers/(?P<domain>[\w-]+)/(?P<period>[\w-]+)/$
于 2013-08-19T16:57:04.727 回答