我正在尝试处理查询参数类似于以下网址的请求:http://127.0.0.1:8080/foo?bar=-capacity。我已经对Django的url模式和正则表达式进行了相当多的尝试和错误,但到目前为止还没有成功。我的正则表达式知识无疑是精简的。
此模式 url(r'^ foo(。*)$',views.QueryFoo.as_view()),将处理上述请求,但问题是它会抓取常规获取请求,例如以下: http://127.0.0.1:8080/foo 。我可以在url模式中添加一个反斜杠,如 url(r'^ foo /(.*)$',views.QueryFoo.as_view()),这似乎是Django规范,但随后我必须处理来自两个单独网址的请求。
编辑: 另一个想法是将所有请求路由到/ foo到同一个视图,然后在url中检查查询参数。如果存在进程,则执行正常的请求处理。
有什么建议吗?
答案 0 :(得分:1)
据我所知,Django URL /视图匹配仅适用于URL的路径部分,始终排除查询字符串参数。因此,根据定义,无法使其匹配两个不同的视图,具体取决于某些查询字符串参数的存在(或不存在)。
如果您想根据参数是否在查询字符串上传递而执行其他操作,请执行以下操作:
const greetings = {
hello: [{
english: 'hi',
french: 'bonjour',
portuguese: 'oi'
}],
goodbye: [{
english: 'bye',
french: 'au revoir',
portuguese: 'tchau'
}]
};
greetings.hello.portuguese;
greetings['hello']['portuguese'];
greetings['hello'][2];