ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-如何在webapp中实现标签?

2019-11-02 00:58:01  阅读:143  来源: 互联网

标签:google-app-engine web-applications python tags


我正在尝试使用Webapp制作一个基本的报价共享应用程序.显然,至关重要的是能够为每个引用提供任意标签.

所以这是我想出的相关代码:
(主要来自入门书籍“ Using Google App Engine”中的示例聊天应用程序)

class Quote(db.Model):
  user = db.ReferenceProperty()
  text = db.StringProperty()
  tags = db.StringListProperty()
  created = db.DateTimeProperty(auto_now=True)

和“视图”:

class QuoteHandler(webapp.RequestHandler):

  def get(self):
    que = db.Query(Quote).order('-created');
    chat_list = que.fetch(limit=10)
    doRender(
          self,
          'quote.htm',
          { 'quote_list': quote_list })

  def post(self):
    self.session = Session()
    if not 'userkey' in self.session:
      doRender(self, 'quote.htm', {'error' : 'Must be logged in'} )
      return

    msg = self.request.get('message')
    if msg == '':
      doRender(self,'quote.htm',{'error' : 'Blank quote ignored'} )
      return
    tgs = self.request.get('tags') #really not sure of this
    newq = Quote(user = self.session['userkey'], text=msg, tags= tgs)
    newq.put();
    self.get();

在quote.htm中,我有:

{% extends "_base.htm" %}
{% block bodycontent %}
      <h1>Quotes</h1>
      <p>
      <form method="post" action="/quote">
        Quote:<input type="text" name="message" size="60"/><br />
        Tags: <input type="text" name="tags" size="30"/>
      <input type="submit" value="Send"/> 
      </form>
      </p>
      {% ifnotequal error None %}
       <p>
       {{ error }}
       </p>
      {% endifnotequal %}
<br />
<h3> The latest quotes </h3>

      {% for quote in quote_list %}
        <p>
           {{ quote.text }}<br />
         ({{quote.user.account}}) <br />
         {{ quote.tags }}

           {{ quote.created|date:"D d M Y" }}
        </p>
      {% endfor %}
{% endblock %}

但是,此组合有问题.我得到:

BadValueError: Property tags must be a list

无论我在文件标签中输入什么,(显然)我对Python和Webapp都是陌生的.我在Google上搜索了很多,但是找不到任何实现标签的指南.因此,我非常感谢您为解决此错误提供的帮助,或者为我指出了一种处理标签的更优雅的方法.

解决方法:

在创建报价之前,尝试使用split()将tgs转换为单词列表.标签在表单中应以空格分隔,否则,如果您希望将标签与其他内容分开,则可以添加一个参数来拆分.

...
tgs = self.request.get('tags').split()
newq = Quote(user = self.session['userkey'], text=msg, tags= tgs)
...

标签:google-app-engine,web-applications,python,tags
来源: https://codeday.me/bug/20191101/1987394.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有