【问题标题】:Send data from template to a view django将数据从模板发送到视图 django
【发布时间】:2013-01-21 14:33:55
【问题描述】:

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

<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),

由于空格和逗号等原因,无法使用。

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

提前致谢

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    为什么不通过 pass park.id 然后在 view 中获取 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 使用park.id 是一个很好的建议。我以前遇到过这个问题,并在我的回答中寻求解决方案......但你的解决方案要好得多!
    【解决方案2】:
     url(r'^location/(?P<park_location>[a-zA-Z0-9_.-]+)/$', Location_Main),
    

    【讨论】:

      【解决方案3】:

      您需要先从位置名称中删除标点符号和非英语字符,然后才能在 url 中使用它们。或者,您可以在定义 park.location 时删除它们。

      【讨论】:

      • 好的,我希望视图然后搜索数据库并检索同一位置的其他公园。如果我删除标点符号,我将如何执行搜索?
      • 在将问题字符添加到数据库之前删除它。这样,当您比较它们时,它们将是相同的。
      【解决方案4】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 2012-09-24
        • 2012-06-08
        • 1970-01-01
        • 2015-09-14
        相关资源
        最近更新 更多