Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 这是谷歌应用程序引擎+;德扬戈?_Django_Google App Engine - Fatal编程技术网

Django 这是谷歌应用程序引擎+;德扬戈?

Django 这是谷歌应用程序引擎+;德扬戈?,django,google-app-engine,Django,Google App Engine,最近我发现了一个非常令人不安的问题 我有以下python代码: for cat in cats: cat.pages = ['apple', 'table', 'computer'] template_values = { 'cats': cats } path = os.path.join(os.path.dirname(__file__), 'templates/index.html') self.response.out.write(template.render(path,

最近我发现了一个非常令人不安的问题

我有以下python代码:

for cat in cats:
  cat.pages = ['apple', 'table', 'computer']

template_values = {
  'cats': cats
}

path = os.path.join(os.path.dirname(__file__), 'templates/index.html')
self.response.out.write(template.render(path, template_values))
index.html django模板如下所示:

{% for cat in cats %}
   <div>{{ forloop.counter }}</div>
   <div>name: {{ cat.cat_name }}</div>
   <div>pages: {{ cat.pages|length }}<br>
{% endfor %}
我甚至可以构建一个嵌套循环,因为我可以访问循环中的cat.pages。 但是,当我将此代码上载到AppEngine时,我将得到以下结果:

1.
name: sample1
pages: 0

2.
name: sample2
pages: 0

我甚至不能访问cat.pages变量。我的代码怎么了?还是这是一只虫子?它按预期在本地工作,但在部署到GAE服务器后会产生这种奇怪的结果。非常感谢您的帮助。

我想我们需要更多的背景来了解问题所在。“猫”从哪里来?猫的个体是什么?我猜它们是模型实例,但根据您的示例很难说。如果用一个简单对象子类数组替换它们,是否有效?这将向您显示它是否特定于您使用的类


但是,一般来说,为方便模板化而将任意属性指定给对象是个坏主意。您最好创建一个容器对象或字典。

我想我们需要更多的上下文来了解问题所在。“猫”从哪里来?猫的个体是什么?我猜它们是模型实例,但根据您的示例很难说。如果用一个简单对象子类数组替换它们,是否有效?这将向您显示它是否特定于您使用的类

但是,一般来说,为方便模板化而将任意属性指定给对象是个坏主意。您最好创建一个容器对象或字典。

也许可以尝试:

for cat in cats:
   for item in ['apple', 'table', 'computer']:
       cat.pages.append(item)
如果cat.pages在GAE中像一个插入指令的列表一样时髦,那么您的原始代码会用一个普通的python列表来全面替换它。

也许可以尝试:

for cat in cats:
   for item in ['apple', 'table', 'computer']:
       cat.pages.append(item)

如果cat.pages在GAE中像一个插入指令的列表一样时髦,那么您的原始代码就会用一个普通的python列表来全面替换它。

我强烈建议为您的cat对象编写某种dump()方法或其他方法,并在模板中的单个实例上调用它。您已经确定了一个系统问题,但还没有采取措施来隔离错误发生的阶段。我强烈建议为您的cat对象编写某种dump()方法或其他方法,并在模板中的单个实例上调用它。您已经确定了一个系统问题,但还没有采取措施来隔离错误发生的阶段。感谢tip-building并将纯python嵌套字典和列表传递给django,而不是试图传递带有额外属性的GAE dbmodel。感谢tip-building并传递纯python嵌套字典和列表to django工作得很好-我没有尝试传递带有额外属性的GAE dbmodel。“cats”是一个db.Model-我意识到我不能将它传递给django,所以我将它重建到python列表中的嵌套字典中,然后我就可以将它传递给django。然而,仅使用db.Models在本地运行良好,这就是为什么我发现这个问题令人困惑的原因。谢谢你的帮助,你是对的,分配任意属性是个坏主意!您可以将模型对象传递给Django模板,但不要尝试向其添加属性!:)'cats是一个db.Model——我意识到我不能将它传递给Django,所以我将它重新构建到python列表中的嵌套字典中,然后我可以将它传递给Django。然而,仅使用db.Models在本地运行良好,这就是为什么我发现这个问题令人困惑的原因。谢谢你的帮助,你是对的,分配任意属性是个坏主意!您可以将模型对象传递给Django模板,但不要尝试向其添加属性!:)