我想离开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
答案 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&号。
让我知道你的想法?