Google App Engine:实体的基于标题的网址路径

时间:2013-12-10 18:48:51

标签: google-app-engine python-2.7 app-engine-ndb

我想根据标题为实体创建网址路径。

例如,如果图书实体的标题是“罗密欧与朱丽叶”,我希望网址路径为

http://example.com/book/romeo-and-juliet

此外,如果图书标题为“ Romeo& Juliet ”,我将如何处理此网址路径。最后,是否建议使用此方法,或者我应该使用实体的ID创建URL路径,如下所示:

http://example.com/book/4644337115725824

感谢任何建议。

1 个答案:

答案 0 :(得分:1)

取决于您如何检索图书。 App引擎使用ndb,每本书的密钥应该是唯一的。所以“罗密欧与朱丽叶”和“罗密欧与朱丽叶”之间会有所不同。

此外,您还需要为每个标题提供一种独特方式,并且对于包含相同标题(例如,不同国家/地区)的书籍来说,这将是很难的。

一种方法是同时使用两者。生成的ID和标题如

/12345678/mybook

根据你的评论,你不会被罪恶感到困惑,但搜索引擎优化和网友友好的字符串。我建议搜索一下,你找到的不仅仅是你需要的。我不是URL友好网址的专家,但它们很麻烦,需要逃避规则等。

例如'romeo&由于空间和'&',juliet'将不得不逃脱。

那么您最终会为您的应用创建约定。例如,一个简单的规则是:

  1. 替换'&'用'和'标题
  2. 将''(空格)替换为下划线'_'
  3. ...
  4. 所以你最终会得到'romeo_and_juliet',它比'romeo& juliet'更友好。

    如果您担心的字符串主要用于:

    encoded_param = urllib.urlencode(book_title)
    

    我喜欢使用像

    这样的网址
    /books/[key]/romeo_and_juliet
    

    其中[key]是书key,可以是字符串也可以是id。