假设我有一个'get_item'视图,如何为以下php风格的URL编写URL模式?
http://example.com/get_item/?id=2&type=foo&color=bar
(我没有使用标准的“漂亮”类型的网址,即:http://example.com/get_item/2/foo/bar
,因为它不实用)
具体来说,当用户在浏览器中输入上述内容时,如何让视图响应?如何收集参数并在我的视图中使用它?
我试图至少让id部分正确,但无济于事。当我在浏览器http://example.com/get_item?id=2
我的网址格式:
(r'^get_item/id(?P<id>\d+)$', get_item)
我的观点:
def get_item(request):
id = request.GET.get('id', None)
xxxxxx
简而言之,如何在django中使用查询字符串参数实现Php的url模式?
答案 0 :(得分:52)
制作这样的图案:
(r'^get_item/$', get_item)
在你看来:
def get_item(request):
id = int(request.GET.get('id'))
type = request.GET.get('type', 'default')
虽然对于普通的细节视图等,你应该将id / slug放在url而不是查询字符串中!使用get参数,例如。用于过滤列表视图,用于确定当前页面等...
答案 1 :(得分:19)
您只需将网址格式更改为:
(r'^get_item/$', get_item)
您的视图代码将有效。在Django中,url模式匹配用于实际路径而不是查询字符串。
答案 2 :(得分:-4)
查看此模式
url(r'^get_item$', get_item)
您的视图将看起来像
def get_item(request):
id = int(request.Get.get('id'))