我正处于单页网络应用程序的设计阶段,并希望用户可以点击格式化的URL,数据请求将加载到页面中。
例如,http://www.mysite.com/?category=some_cat
的网址会触发Category
视图及相关数据。
我的目的是解析URL,收集数据,然后将其传递给index.html模板,以便在页面加载时呈现。加载页面后,Javascript触发器设置将触发相应的按钮以加载客户端视图。
但是,我在设置URL解析器时遇到问题,因为以下设置与上面的示例网址不匹配。
from app.views import app_views, photo_views, user_views, admin_views
urlpatterns = patterns("",
url(r'^/(?P<category>\d+)/$', app_views.index)
)
答案 0 :(得分:1)
通过您的网址向GET发送信息并使用视图功能的参数格式化您的网址时,您会感到困惑。假设我正在访问名为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']
格式化网址不同,因为这意味着要查找网址的模式。即看起来像r'^/(?P<category>\d+)/$'
的模式会查找:http://www.mysite.com/<category>/
并将其作为附加参数发送到您的视图中的请求,如下所示:
def response(request, category):
...
正则表达式用于定义如何识别网址的这一部分。例如,您使用的\d+
表示类别必须是数字。您可以根据需要搜索如何定义不同类型的模式
请注意,使用GET,您将数据发送到呈现您当前正在访问的网页的相同视图功能,而使用不同的网址意味着您告诉它在哪里通过您的urls.py (通常是不同的功能)。这会让事情变得更清楚吗?