gpt4 book ai didi

python - 如何在 Flask/GAE 中渲染标签?

转载 作者:太空狗 更新时间:2023-10-30 01:23:54 24 4
gpt4 key购买 nike

我对所有这些都不熟悉,并试图弄清楚如何制作带有标签的简单博客文章。以下是相关部分:

型号:

class Post(db.Model):
title = db.StringProperty(required = True)
content = db.TextProperty(required = True)
when = db.DateTimeProperty(auto_now_add = True)
author = db.UserProperty(required = True)
tags = db.ListProperty(db.Category)

WT 形式:

class PostForm(wtf.Form):
title = wtf.TextField('Title', validators=[validators.Required()])
content = wtf.TextAreaField('Content', validators=[validators.Required()])
tags = wtf.TextField('Tags', validators=[validators.Required()])

模板:

{% block content %}
<ul>
<h1 id="">List of Posts</h1>
{% for post in posts %}
<li>
{{ post.title } By {{ post.author.nickname() }})<br />
{{ post.content }}<br />
Author {{ post.author }} <br />
Tags {{ post.tags}} <br />
</li>
{% endfor %}
</ul>
{% endblock %}

问题是无论我在标签字段中输入什么,模板都会呈现一个空列表(即“[]”)而不是标签。感谢您提出解决此问题的提示。

最佳答案

我认为您需要自定义您自己的 WTForm 字段而不是使用 TextField。wtforms 文档中有一些示例代码。

http://wtforms.simplecodes.com/docs/0.6.1/fields.html#custom-fields

class TagListField(Field):
widget = TextInput()

def _value(self):
if self.data:
return u', '.join(self.data)
else:
return u''

def process_formdata(self, valuelist):
if valuelist:
self.data = [x.strip() for x in valuelist[0].split(',')]
else:
self.data = []





class BetterTagListField(TagListField):
def __init__(self, label='', validators=None, remove_duplicates=True, **kwargs):
super(BetterTagListField, self).__init__(label, validators, **kwargs)
self.remove_duplicates = remove_duplicates

def process_formdata(self, valuelist):
super(BetterTagListField, self).process_formdata(valuelist)
if self.remove_duplicates:
self.data = list(self._remove_duplicates(self.data))

@classmethod
def _remove_duplicates(cls, seq):
"""Remove duplicates in a case insensitive, but case preserving manner"""
d = {}
for item in seq:
if item.lower() not in d:
d[item.lower()] = True
yield item

关于python - 如何在 Flask/GAE 中渲染标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com