【问题标题】:django url parse formatted urldjango url 解析格式化的url
【发布时间】:2013-10-06 14:08:24
【问题描述】:

我正处于单页网络应用程序的设计阶段,并希望使用户可以单击格式化的 URL 并将数据请求加载到页面中。

例如,http://www.mysite.com/?category=some_cat 的 url 将触发带有相关数据的 Category 视图。

我的目的是解析 URL,收集数据,然后将其传递给 index.html 模板以在页面加载时呈现。页面加载后,Javascript 触发器设置将触发相应的按钮来加载客户端视图。

但是,我在设置 URL 解析器时遇到了问题,因为以下设置与上面的示例 url 不匹配。

from app.views import app_views, photo_views, user_views, admin_views

urlpatterns = patterns("",
    url(r'^/(?P<category>\d+)/$', app_views.index)
)

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    您在使用 GET 通过 url 发送信息和使用视图函数的参数格式化您的 url 之间感到困惑。假设我正在访问一个名为 http://www.mysite.com/ 的网站,该页面的表单如下所示:

    <form>
    <input type='text' name='category' id='category'></input>
    <button type='submit'>Send!</button>
    </form>
    

    点击后,网址会自动更改为http://www.mysite.com/?category=&lt;value of input&gt;? 标记之后的所有内容都应视为 GET 数据,语法为 &lt;id&gt;=&lt;value&gt;。然后您可以像这样访问它们:

    def response(request):
        category = request.GET['category']
    

    格式化 url 是不同的,因为它意味着寻找 url 的一部分的模式。即一个看起来像 r'^/(?P&lt;category&gt;\d+)/$' 的模式会寻找这个:http://www.mysite.com/&lt;category&gt;/ 并将它作为 附加参数 发送到您的视图中的请求,如下所示:

    def response(request, category):
        ...
    

    正则表达式用于定义您如何识别该部分 url。例如,您使用的\d+ 表示类别需要是一个数字。您可以根据需要搜索如何定义不同类型的模式

    请注意,使用 GET 您将数据发送到 呈现您当前访问的页面的同一视图函数,而使用不同的 url 意味着您告诉它去哪里通过您的 urls.py (通常是不同的功能)。是不是让事情变得更清楚了一些?

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 1970-01-01
      • 2019-01-11
      • 2014-01-03
      • 2021-07-09
      • 1970-01-01
      • 2016-03-10
      • 2021-10-13
      • 2011-07-30
      相关资源
      最近更新 更多