Django URL - 如何通过干净的URL传递多个类别而无需?

时间:2009-05-09 23:07:08

标签: url post seo get django-urls

我想离开GET params。不想使用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/

那么,一旦选择了位置和类别,我将如何将上述两个网址合二为一起?

我可能需要传递分页的页码。 (http://foo.com/page/2/

我想保持网址清晰且不言自明。 我知道如何一次执行一种类型的URL,但不能组合多种类型。

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

谢谢,

VN44CA

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

因此,当用户首次访问 http://foo.com/ 时,系统会向他们显示要选择的位置。此时饼干是空的。

因此,用户继续选择United-State,URL将显示为http://foo.com/12334_0_0_0/United-States/,位置Cookie设置为1234,这是位置美国的ID。

现在,用户选择加利福尼亚州,并且网址更改为http://foo.com/1235_0_0_0/United-States-California/,并且Cookie将从美国替换为1235,这是加州位置的ID。此时,用户选择Category Electronics。因此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部分编码成一些随机文本并将其解码回args&号。

让我知道你的想法?