如何将计算参数传递给Django中的URL

时间:2016-01-16 20:16:20

标签: python django url

我有一些在Django视图中计算的参数需要传递给url。我怎么能这样做。

当前网址格式:

url(r'^hotels/(?P<country>[A-Za-z0-9-]+)/(?P<region>[A-Za-z0-9-]+)', hotel.views.hotels, name='hotels')

我的模板中的链接:

<a href="{% url 'hotels' %}?region_id={{ region.id }}">{{ region.name }}</a>

我的观点: 我从请求中获取了region_id。

def hotels(request):
    region_id = request.GET.get('region_id')
    region = Region.objects.get(id=region_id)
    region_name = region.name
    country_name= region.country.name

    context = {
        'region_id': region_id,
        'region': region_name,
        'country': country_name,
    }
    return render(request, 'hotel/hotels.html', context)

我从模板中获取了region_id,之后我使用查询来获取区域,区域名称和相应的国家。
应在url中使用region_name和country_name。

到目前为止,这似乎不起作用。

我希望有人可以帮我完成这件事。

1 个答案:

答案 0 :(得分:2)

您的hotels网址需要两个参数:countryregion您需要将它们传递给url函数:

<a href="{% url 'hotels' region.country.name region.id %}">{{ region.name }}</a>

在视图中接下来,从传入的kwargs中获取它们。

def hotels(request, country, region):
    pass