1

我想远离 GET 参数。不想使用 POST,我至少有两个不同的类别来构建 URL。

首先要求访问者选择一个位置,例如:http: //foo.com/United-States/ || http://foo.com/United-States/California/ || http://foo.com/United-States/California/San-Francisco-Region/ || http://foo.com/United-States/California/San-Francisco/

选择位置后,他们可以选择一个类别,例如:

http://foo.com/Electronics/ || http://foo.com/Electronics/Camera/ || http://foo.com/Electronics/Camera/Digital/ || http://foo.com/Electronics/Camera/Digital/SLR/

那么,一旦完成了位置和类别的选择,我将如何将上述两个 URL 合并为一个呢?

我可能需要传入页码进行分页。( http://foo.com/page/2/ )

我想保持 URL 干净且不言自明。我知道如何一次处理一种类型的 URL,但不组合多种类型。

如果我要做一个 GET,那么我会做:http://foo.com/?locid=23323&catid=335&page=2,但我喜欢利用 Django 的干净 URL 并远离 ?& 的东西。

谢谢,

VN44CA

4

3 回答 3

1

我认为这将涉及 URL 中的许多信息。我假设任何位置都有其唯一 ID,类别也是如此。为什么不建立一个 URL:

http://foo.com/United-States/Electronics/

http://foo.com/California/Digital/

http://foo.com/San-Francisco/SLR/

等等...

在您的情况下,2 个参数就足够了。或者您可以更改类别名称以使其更有意义。

http://foo.com/Electronics/Camera/Digital/ => http://foo.com/Digital-Cameras/

于 2009-05-09T23:36:33.217 回答
0

根据您使用位置数据的方式以及用户希望更改位置的频率,最好将其存储在会话中,而不是在 URL 中指定。

例如,我不太可能开始在旧金山寻找单反数码相机,然后去巴尔的摩寻找篮球。

但是,如果您想要任何位置类别组合的永久链接,显然这还不够。

于 2009-05-10T07:14:56.580 回答
0

在考虑了一段时间之后,我发现(对我来说)最好的解决方案是让一个字符串在一个干净的 URL 中保存我需要的所有参数。

因此,当用户第一次访问http://foo.com/时,他们会看到一个可供选择的位置。此时 Cookie 为空。

因此,用户继续选择 United-State,URL 看起来像http://foo.com/12334_0_0_0/United-States/,并且位置 cookie 设置为 1234,即位置美国的 id。

现在用户选择加利福尼亚并且 URL 更改为http://foo.com/1235_0_0_0/United-States-California/并且 cookie 从美国替换为 1235,这是位置加利福尼亚的 id。此时用户选择电子产品类别。因此 URL 更改为http://foo.com/1235_3333_0_0/Electronics/并且 3333 保存在类别 Cookie 中。

如果用户下拉到单反相机,那么他/她会看到http://foo.com/1235_3344_0_0/SLR-Cameras/

这样,URL 的第一部分最多可以跟踪 4 个可以传递的参数,并且名称(slugs)仅用于演示和 SEO。

我认为这行得通吗?将 URL 的 x_y_z_p 部分编码为一些随机文本并解码回参数和数字会很酷。

让我知道你的想法?

于 2009-05-18T00:02:28.857 回答