将数据从模板发送到视图django

时间:2013-02-06 11:47:37

标签: django django-templates

在我的应用程序中,显示有关条目的数据,详细说明其信息。您可以通过超链接在条目之间导航。 到目前为止代码:

<a href="/parks/{{ park.id }} ">{{park.name}}</a>

处理这个问题已经足够了。 id会在urls.py中捕获到views.py

我现在面临的问题是处理我的“位置”条目。地点的例子是'欧洲,英国','美国,纽约'。 我知道:

<a href="/parks/{{ park.location }} ">{{park.location}}</a>

使用:

url(r'^location/(?P<park_location>\d+)$', Location_Main),
由于空格和逗号等,

将无效。

我该如何解决这个问题? 我还想要'位置'视图和'位置'网址来处理母公司的位置说()

提前致谢

4 个答案:

答案 0 :(得分:6)

为什么不传递传递park.id然后在视图中获取park对象然后获取其位置:

网址:

url(r'^location/(?P<park_id>\d+)$', Location_Main, name="park_location"),

模板:

<a href="{% url park_location park.id %}">{{park.location}}</a>

观点:

def Location_Main(request, park_id):
    park = get_object_or_404(Park, pk=park_id)
    location = park.location

或者将位置发送为GET参数:

网址:

url(r'^location/$', Location_Main, name="park_location"),

模板:

<a href="{% url park_location %}?location={{park.location}}">{{park.location}}</a>

观点:

def Location_Main(request):
    location = request.GET.get('location')

答案 1 :(得分:1)

 url(r'^location/(?P<park_location>[a-zA-Z0-9_.-]+)/$', Location_Main),

答案 2 :(得分:0)

在网址中使用之前,您需要从位置名称中删除标点符号和非英文字符。或者,您可以在定义park.location时删除它们。

答案 3 :(得分:0)

您可以使用urlencode模板过滤器将字符转义为

<a href="/parks/{{ park.location|urlencode }} ">{{park.location}}</a>

参考this question,您可能需要将网址格式更改为

url(r'^location/(?P<park_location>[\w|\W]+)$', Location_Main)