我想用Django编写universal View,在这个函数中,我想处理几种情况:首先,当我有像vkusers3/11122233/1/2/这样的url时,我还想让它在url中缺少2个或第三个参数时工作,比如:vkusers3/11122233/或vkusers3/11122233/1/
我找不到它的教程如何做到这一点(https://docs.djangoproject.com/en/1.6/topics/http/urls/等)。 当你有超过5个url参数组合时,这个问题就变成了一场噩梦,那么你应该写5个不同的url配置,5次用html模板硬编码这个模式。你知道吗
但是等等,甚至更多!,那么组合数学呢:我想要/user/group/sex/smoking/但是我想要/user/group/smoking/也就是说,组中所有同时吸烟的男女用户。所以这个数字是巨大的。你知道吗
def list_groupmembers_sex(request, group_id, sex=None, smoking=None):
success = False
if group_id and sex and smoking==None:
vkusers = Vkuser._get_collection().find({"member_of_group": int(group_id), 'sex': int(sex)})# 62740364 81099158
success = True
elif group_id and sex and smoking!=None:
vkusers = Vkuser._get_collection().find({"member_of_group": int(group_id), 'sex': int(sex), 'personal.smoking': int(smoking)})
success = True
else:
vkusers = Vkuser._get_collection().find({'personal.smoking': 1})
ctx = {'vkuser_list': vkusers, 'group_id': group_id, 'sex': sex, 'smoking':smoking, 'success': success}
return render_to_response('blog/vkuser_list.html', ctx, context_instance = RequestContext(request))
在我的网址.py地址:
url(r'^vkusers3/(\d{1,8})/(\d{1})/(\d{1})/$', 'blog.views.list_groupmembers_sex', name='vkuser-list3'),
在我的基本.html地址:
<li class="menu-level-1"><a href="{% url 'vkuser-list3' group_id sex smoking %}">users</a></li>
Django 1.6.10,MongoDB 2.7.1,mongoengine
在这一点上,您应该咬紧牙关,只需查询参数-
vkusers3/?sex=1&smoking=2&group= 11122233
。您可以完全从URL和视图定义中删除参数,只需在视图主体中使用request.GET['sex']
等。你知道吗你不需要这么复杂的逻辑。只需使用传递给视图的参数填充搜索条件,如下所示:
是的,考虑切换到常规GET参数,如@daniel roseman建议的那样。对于像您问题中那样的url,您无法从
/user/group/smoking/
确定/user/group/sex/
url。你知道吗更新:
request.GET
是类似dict的对象,因此可以使用in
表达式:相关问题 更多 >
编程相关推荐