Google应用程序引擎(Python)-获取数据存储错误

Google应用程序引擎(Python)-获取数据存储错误,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我正在尝试创建一个notes页面,在该页面的底部我有一个输入,在这里我可以给自己留下要查看的主题,它将发布到输入下面。我对编程相当陌生,经常出错。我想将注释存储在数据存储中,但似乎无法使其正常工作。我得到这个错误: 内部错误:没有这样的表:projectname!!实体 有什么帮助吗?我做错了什么。如果需要,我可以提供app.yaml或index.yaml页面 以下是我的HTML索引模板页面的输入部分: <form method="post"> <input typ

我正在尝试创建一个notes页面,在该页面的底部我有一个输入,在这里我可以给自己留下要查看的主题,它将发布到输入下面。我对编程相当陌生,经常出错。我想将注释存储在数据存储中,但似乎无法使其正常工作。我得到这个错误:

内部错误:没有这样的表:projectname!!实体

有什么帮助吗?我做错了什么。如果需要,我可以提供app.yaml或index.yaml页面

以下是我的HTML索引模板页面的输入部分:

 <form method="post">
     <input type="text" name="comment" size="40" style="display: block; margin: 0 auto; text-align:center" >
     {% if items %}
         {% for item in items %}
            <input type="hidden" name="comment" value="{{item}}">
         {% endfor %}
     {% endif %}
     <br>
     <button style="display: block; margin: 0 auto;">Add</button>

     {% if items %}
         <h3 class="idea-name" style="text-align:center">Topics to look into</h3>
         <ul>
           {% for item in items %}
                <li>{{ item }}</li>
           {% endfor %}
         </ul>
     {% endif %}
 </form>

{%if items%}
{items%%中的项的%s}
{%endfor%}
{%endif%}

添加 {%if items%} 要研究的主题
    {items%%中的项的%s}
  • {{item}}
  • {%endfor%}
{%endif%}
这是我的main.py文件:

import jinja2
import webapp2 
import os

from google.appengine.ext import ndb

template_dir = os.path.join(os.path.dirname(__file__), 'templates') 
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape = True)


class Comment(ndb.Model):
    content = ndb.StringProperty()
    date = ndb.DateTimeProperty(auto_now_add=True)

class Handler(webapp2.RequestHandler):
    def write(self, *a, **kw):
      self.response.out.write(*a, **kw)

    def render_str(self, template, **params):
      t = jinja_env.get_template(template)
      return t.render(params)

    def render(self, template, **kw):
      self.write(self.render_str(template, **kw))

class MainPage(Handler):
    def get(self):
      query = Comment.query().order(Comment.date)
      for comment in query:
        content = comment.content
        self.response.write('<p>%s</p>' % self.comment.content)
      self.render("index.html")

    def post(self):
        content = self.request.get('content')
        comment = Comment(content = content)
        comment.put()
        import time
        time.sleep(.1)
        self.redirect('/')


class Unit0Page(Handler):
    def get(self):
  self.render("unit0.html")

class Unit1Page(Handler):
    def get(self):
      self.render("unit1.html")

class Unit2Page(Handler):
    def get(self):
      self.render("unit2.html")

class Unit3Page(Handler):
    def get(self):
      self.render("unit3.html")


app = webapp2.WSGIApplication([
    ('/', MainPage),
    ('/unit0.html', Unit0Page),
    ('/unit1.html', Unit1Page),
    ('/unit2.html', Unit2Page),
    ('/unit3.html', Unit3Page)], debug=True)
importjinja2
导入webapp2
导入操作系统
从google.appengine.ext导入ndb
template\u dir=os.path.join(os.path.dirname(\u文件\u),'templates')
jinja_env=jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir),autoescape=True)
类注释(ndb.Model):
content=ndb.StringProperty()
date=ndb.DateTimeProperty(自动\u立即\u添加=True)
类处理程序(webapp2.RequestHandler):
def写入(自身,*a,**kw):
自响应输出写入(*a,**kw)
def render_str(自身、模板、**参数):
t=jinja_环境获取模板(模板)
返回t.render(参数)
def渲染(自身、模板,**kw):
self.write(self.render_str(模板,**kw))
类主页面(处理程序):
def get(自我):
query=Comment.query().order(Comment.date)
查询中的注释:
content=comment.content
self.response.write('%s

'%self.comment.content) self.render(“index.html”) def post(自我): content=self.request.get('content') 注释=注释(内容=内容) comment.put() 导入时间 时间。睡眠(.1) self.redirect(“/”) 类Unit0Page(处理程序): def get(自我): self.render(“unit0.html”) 类Unit1Page(处理程序): def get(自我): self.render(“unit1.html”) 类Unit2Page(处理程序): def get(自我): self.render(“unit2.html”) 类Unit3Page(处理程序): def get(自我): self.render(“unit3.html”) app=webapp2.WSGIApplication([ (“/”,主页), ('/unit0.html',Unit0Page), ('/unit1.html',Unit1Page), ('/unit2.html',Unit2Page), ('/unit3.html',Unit3Page)],debug=True)
我建议您包括stacktrace。该错误看起来很奇怪,除非它与投影有关。您只能向响应对象写入一次,因此将其置于该循环中是不合适的。@user2266449您是否建议将self.response.write(“%s

'%self.comment.content”)和self.render(“index.html”)结合使用?是,我一时记不起render是做什么的,但我认为这只是对响应对象的另一次写入的简写。我建议您包括stacktrace。该错误看起来很奇怪,除非它与投影有关。您只能向响应对象写入一次,因此将其置于该循环中是不合适的。@user2266449您是否建议将self.response.write(“%s

'%self.comment.content”)和self.render(“index.html”)结合使用?是,我不记得render会做什么,但我认为它只是对响应对象的另一次写入的简写。