0

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

例如,一个 urlhttp://www.mysite.com/?category=some_cat将触发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)
)
4

1 回答 1

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=<value of input>. ?之后的所有内容都应视为 GET 数据的标记,语法为<id>=<value>. 然后,您可以像这样访问它们:

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

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

def response(request, category):
    ...

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

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

于 2013-10-06T14:21:32.443 回答