如何从Django中的url中删除?q =

时间:2017-08-26 16:33:46

标签: django django-urls

我目前的网址如下:

  

[域名] /?q = [search_term]

并希望看起来像这样:

  

[域名] / [search_term]

在我的 urls.py 中,我有以下代码:

urlpatterns = patterns('',
     url(r'^$', 'home', name='home'),
     url(r'^q=(?P<search_term>[A-Za-z0-9\-]+)$', 'home', name='query'),

views.py 中,代码如下所示:

def home(request, search_term='q'):
     do stuff
     return render(request, 'template', {context})

出于某种原因,无论我是否在网址中都有search_term,该应用始终为第一条路线提供服务。我做错了什么?

3 个答案:

答案 0 :(得分:1)

更正urls.py

urlpatterns = patterns('',
     url(r'^$', 'home', name='home'),
     url(r'^(?P<search_term>[A-Za-z0-9\-]+)$', 'home', name='query'),  # without =q

答案 1 :(得分:0)

URL中的?将Django匹配的pathquery参数中的URL模式分开,request参数在选择路由后从?对象读取并激活。

也就是说,您的第二个网址格式永远不会匹配其中包含文字[domain name]/q=[search_term]的任何网址。

您的第二个网址格式应与

匹配

[domain name]/?q=[search_term]

但不匹配

function sortObjectKeys(obj){ return Object.keys(obj).sort().reduce((acc,key)=>{ if (Array.isArray(obj[key])){ acc[key]=obj[key].map(sortObjectKeys); } if (typeof obj[key] === 'object'){ acc[key]=sortObjectKeys(obj[key]); } else{ acc[key]=obj[key]; } return acc; },{}); } // test it sortObjectKeys({ telephone: '069911234124', name: 'Lola', access: true, cars: [ {name: 'Family', brand: 'Volvo', cc:1600}, { name: 'City', brand: 'VW', cc:1200, interior: { wheel: 'plastic', radio: 'blaupunkt' } }, { cc:2600, name: 'Killer', brand: 'Plymouth', interior: { wheel: 'wooden', radio: 'earache!' } }, ] });

答案 2 :(得分:0)

GET请求无法做到这一点。您需要使用带变量的帖子才能使其正常工作