Dim*_*ris 10 python google-app-engine wtforms webapp2
我使用Python和webapp2构建了一个多语言Web应用程序.
我有一个名为Tag的对象,它有多种语言的翻译.出于这个原因,我创建了以下模型:
class Language(ndb.Model):
code = ndb.StringProperty()
name = ndb.StringProperty(indexed=False)
class MultilingualText(ndb.Model):
language = ndb.KeyProperty(kind=Language)
text = ndb.TextProperty(indexed=False)
class Tag(ndb.Model):
translations = ndb.StructuredProperty(MultilingualText, repeated=True, indexed=False)
Run Code Online (Sandbox Code Playgroud)
我想问一下这是否是执行此类任务的正确方法,以及如何将此结构与WTForms一起用于验证等.
非常感谢提前!
我认为最佳实施可能会根据您的目标而改变,我的答案可能无法满足您的需求.
对于Language课程,我宁愿不为此目的使用数据存储区.我会babel.Locale用来确定显示名称.
正如蒂姆在评论中所说,我更喜欢使用语言代码作为实体密钥.这是一个示例Tag实现,假设每个都Tag需要urlsafe slug.
def get_urlsafe_slug_from_tag(tag_text):
# ...
# ...
class Slug(ndb.Model):
# use urlsafe slug as the key_name
# You can optionally use the property bellow.
available_translations = ndb.StringProperty(repeated=True)
class Tag(ndb.Model):
# use language code as the key_name
text = ndb.TextProperty()
Run Code Online (Sandbox Code Playgroud)
当新创建标签时,我将创建两个实体; 一个Slug具有独特urlsafe字符串(塞),该标记为关键,以及一个实体Tag与语言代码的主要实体,这个Slug实体是其父母.
在此示例中,有一个名为available_translations的属性,它允许您与用户语言选择进行协商,甚至执行一个查询,该查询将返回带有指定语言翻译的Slugs(例如,带有日语翻译的列表Slugs).
对于WTForm验证,您能告诉我您想如何验证发布数据吗?如果您分享您的详细需求,我想您将能够得到更好的答案.
| 归档时间: |
|
| 查看次数: |
647 次 |
| 最近记录: |