Skip to main content
 首页 » 编程设计

python之Django url正则表达式的问题

2025年05月04日24Leo_wl

我正在尝试使用具有以下结构的 Django 定义搜索 url

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

我的目标是从上面的 url 和将其传递给定义如下的 View

def search(request, device='all', category='single', query='', limit=30): 
    return HttpResponse("device=%s, category=%s, query=%s, limit=%d", device, category, query, limit) 

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。 index 响应良好。对我可能做错了什么有什么建议吗?

请您参考如下方法:

我建议您将搜索网址更改为:

(r'^search', 'search') 

然后在你看来做

def search(request): 
    device = request.GET.get('device', 'all') 
    category = request.GET.get('category', 'single') 
    query = request.GET.get('query', '') 
    limit = request.GET.get('limit', 30) 
 
   return HttpResponse("device=%s, category=%s, query=%s, limit=%d", device, category, query, limit) 

这更加健壮、多变和灵活。