【问题标题】:Google App Engine: Title-based URL Paths for entitiesGoogle App Engine:实体的基于标题的 URL 路径
【发布时间】:2013-12-10 18:48:51
【问题描述】:

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

例如,如果 Book 实体的 title 是“Romeo and Juliet”,我希望 URL 路径是

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

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

http://example.com/book/4644337115725824

感谢任何建议。

【问题讨论】:

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


    【解决方案1】:

    取决于您检索图书的方式。应用引擎使用 ndb 并且每本书的密钥应该是唯一的。所以《罗密欧与朱丽叶》和《罗密欧与朱丽叶》会有区别。

    此外,您还需要为每个标题和包含相同标题(例如不同国家/地区)的书籍提供一种唯一性方式,这将是困难的。

    一种方法是同时使用两者。生成的 id 和类似的标题

    /12345678/mybook
    

    根据您的评论,您不会被罪恶感困扰,而是 SEO 和 url 友好字符串。我建议对此进行搜索,您会发现比您需要的更多。我不是 URL 友好 url 方面的专家,但它们很麻烦,需要转义规则等。

    例如 'romeo & juliet' 由于空格和 '&' 必须被转义。

    因此,您最终会为您的应用创建约定。一个简单的规则是:

    1. 将标题中的“&”替换为“和”
    2. 将“”(空格)替换为下划线“_”
    3. ...

    所以你最终会得到 'romeo_and_juliet',它比 'romeo&juliet' 对 url 更友好。

    如果您主要关注转义字符串,请使用:

    encoded_param = urllib.urlencode(book_title)
    

    我喜欢使用像

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

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

    【讨论】:

    • 谢谢你的回答,吉米。那听起来像一个好主意。我想我真正要问的是:如何使“罗密欧与朱丽叶”或“罗密欧与朱丽叶”网址友好?
    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多