我目前的网址如下:
[域名] /?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,该应用始终为第一条路线提供服务。我做错了什么?
答案 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匹配的path
与query
参数中的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请求无法做到这一点。您需要使用带变量的帖子才能使其正常工作