【发布时间】:2015-05-07 10:21:20
【问题描述】:
这里是使用 3 个 GET 参数的 Django 1.6.10 视图。
def list_groupmembers(request):
success = False
criteria = {}
if 'group' in request.GET:
criteria['member_of_group'] = int(request.GET['group'])
#vkusers = Vkuser._get_collection().find({"member_of_group": int(request.GET['group'])})#Vkuser.objects(__raw__={'sex': 1})
success = True
if 'sex' in request.GET:
criteria['sex'] = int(request.GET['sex'])
#vkusers = Vkuser._get_collection().find({"member_of_group": int(request.GET['group']), 'sex': int(request.GET['sex'])})# 62740364 81099158
success = True
if 'music_artist' in request.GET:
criteria['my_music'] = {'$elemMatch': {'artist': request.GET['music_artist']}}
success = True
print(criteria)
vkusers = Vkuser._get_collection().find(criteria)
ctx = {'vkuser_list': vkusers, 'success': success}
return render_to_response('blog/vkuser_list.html', ctx, context_instance = RequestContext(request))
View 能够处理像/?group=20548110&sex=1&music=Beatles 这样的网址,结果显示所有用户,属于组号 20548110,女性,如披头士音乐。
这里的问题是 url 对是用逻辑“AND”连接的,但如果我想要逻辑“OR”,我需要更改代码。
另一个问题是我想要过滤数据库表中的所有字段,而不仅仅是 3。我有 50 个字段,所以我需要编写 50 个 if 语句 - 这很糟糕。我还需要检查每个字段的类型以构造正确的查询(句柄字符串、日期、数字等)
第三个,我想设置多个url值,例如/?group=20548110&sex=1,2 1,2 表示我想查询男性和女性。
那么:有没有一个 Django 模块可以解决所有这些问题? 与我的问题最相关的是 Drupal PHP 框架的模块视图,它允许所有这些而无需编码。
【问题讨论】:
标签: python django url-routing