Django url正则表达式有问题

2024-06-03 00:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Django定义一个搜索url,其结构如下

www.example.com/afdata/search?device=television&category=news&query=channel&limit=30/

我的目标是从上面的url中提取值televisionnewschannel和{},并将其传递给定义如下的视图

^{pr2}$

afdata是应用程序,我在url配置文件中定义了url,如下所示:

from django.conf.urls.defaults import *

urlpatterns = patterns('afdata.views',
    (r'^$', 'index'),
    (r'^search?device=(?P<device>.*)&category=(?P<category>.*)&query=(?P<query>.*)&limit=(?P<limit>d+)/$', 'search')
)

当我在浏览器中使用上面的搜索查询运行时,我得到500 Internal Server Error。^{cd7>回答很好。对我可能做错了什么有什么建议吗?在


Tags: djangourlsearch定义exampledevicewwwchannel
3条回答

我建议您将搜索url更改为:

(r'^search', 'search')

那么在你看来呢

^{pr2}$

这是灵活多变的。在

在Apache日志中查找stacktrace。另外:您确定您不是指在您的search()的第二行上HTTPResponse not HTTPRequest?在

Django的URL模式与URL的查询部分(以?开头的部分)不匹配。只有在URL结构本身中嵌入参数时,才能执行您正在尝试的操作。在

有关详细信息,请参见the Django docs。在

如果你的网址是:

www.example.com/afdata/search/device/television/category/news/query/channel/limit/30/

然后您可以将其与URL模式匹配,例如:

^{pr2}$

(这将是一个有点奇怪的URL约定,但它可以工作。)

如果URL中包含查询,则只匹配?之前的部分,然后视图需要从request.GET解析出参数。(如果您的示例中已经有了类似的函数,那么编写一些粘合代码来传递参数就很容易了。)

相关问题 更多 >