Google应用程序引擎(Python)-获取数据存储错误
我正在尝试创建一个notes页面,在该页面的底部我有一个输入,在这里我可以给自己留下要查看的主题,它将发布到输入下面。我对编程相当陌生,经常出错。我想将注释存储在数据存储中,但似乎无法使其正常工作。我得到这个错误: 内部错误:没有这样的表:projectname!!实体 有什么帮助吗?我做错了什么。如果需要,我可以提供app.yaml或index.yaml页面 以下是我的HTML索引模板页面的输入部分: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
<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会做什么,但我认为它只是对响应对象的另一次写入的简写。