通过参数更改的Django url [重复]

问题描述 投票:0回答:1

我正在建立一个购物网站,我想制作一个有助于分离男女服装的网址。

我想做的事

当你输入.../men/时,它应该显示所有性别与男性匹配且.../women/相同的产品

我的网址看起来像

urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^upload/$', views.upload, name='uploadproduct'),
    url(r'^(?P<gender>\w+)/$', views.sex),
    # url(r'^(?P<gender>\w+)', views.sex,),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

但无论我在网址中传递性别的字母数字参数,它都无法识别它。它展示了男士产品。例如,即使我去.../nfjwiene/它会显示所有男人的产品。如果我去.../women/也会发生同样的事情。

我的观点看起来:

def sex(request, gender=''):
    if gender == 'men' or 'Men':
        u='M'
    elif gender == 'women' or 'Women':
        u='F'
    else:
        u='err'
    result = Product.objects.filter(sex=u)
    return render(request, 'sex.html', {'item': result}, gender) 
regex django python-2.7
1个回答
0
投票

似乎问题出现在你的if语句中;

if gender == 'men' or 'Men':

始终返回True,它检查性别是否首先等于'men',如果失败,则转到第二个条件,即'Men',它将解析为True。您应该编写if语句,如下所示:

if gender == 'men' or gender == 'Men':

同样适用于女性检查。

© www.soinside.com 2019 - 2024. All rights reserved.