我在网上发现了许多关于这个主题的类似帖子,但没有人明确说明哪个是问题.
码
class Item(models.Model):
@classmethod
def get_next_item_number(cls):
return cls.objects.count() + 1
number = models.IntegerField(default=get_next_item_number)
Run Code Online (Sandbox Code Playgroud)
问题
当我访问Django管理面板时,与'number'字段相关的文本字段包含
<classmethod object at 0x7fab049d7c50>
Run Code Online (Sandbox Code Playgroud)
所以我试着改变上面的代码
class Item(models.Model):
@classmethod
def get_next_item_number(cls):
return cls.objects.count() + 1
number = models.IntegerField(default=get_next_item_number())
Run Code Online (Sandbox Code Playgroud)
但是当我运行django服务器时,我得到:
number = models.IntegerField(default=get_next_item_number())
TypeError: 'classmethod' object is not callable
Run Code Online (Sandbox Code Playgroud)
我知道所有这一切都可以通过将get_next_item_number()声明为外部函数来防止,但这个解决方案对我来说并不优雅,因为get_next_item_number()仅指Item类.
我缺少一个解决方案吗?
我想使用 Google Drive 作为我的 Django 项目的存储(特别是我需要存储用户拍摄的图像)。我想要实现的目标如下:
用户使用表单上传图像。这些文件必须以某种方式通过 Django 进行路由,Django 使用 Google Drive API 将它们重定向到 Google Drive。我不直接从用户浏览器发送文件到 Google Drive 的原因是我应该在客户端存储访问 Google Drive API 的密钥(当然,最终用户不能直接访问它)。
上传后,我必须能够在我的网站上的图库中显示图像。
到目前为止,我已经阅读了 Google Drive API 文档,特别是,我已经成功使用 OAuth2 用于服务器到服务器应用程序完成了快速入门,请参阅此处(快速入门涵盖了将文件上传到用户的 Google Drive 文件夹的情况,因此有是我不需要的用户身份验证的中间步骤;相反,我使用服务帐户来授权我的 api 请求)。
附带问题:
有没有办法以可浏览的方式访问用户通过 API 上传到 Google Drive 的文件列表,或者 API 是他们的唯一接口?我可以使用类似于我自己的 Google 云端硬盘帐户的 UI 来访问它们吗?
另外,我是 Google 服务的新手,开发者控制台对我来说似乎很混乱...我不明白我可以使用多少磁盘空间以及该存储空间如何/是否与我自己的 Google Drive 帐户相关。
我向 Jinja2 和 Nunjucks 用户发布了这个问题,因为后者很大程度上受到前者的启发,并且它们的模板语法基本相同。
当缩进和空格很重要时(例如,在生成降价文件时),我在寻找编写模板文件的最佳方法时遇到了一些麻烦。
假设以下上下文传递给我的模板
{
functions = [
{
name: "myFunc",
description: "This is a jsDoc description for a function",
params: [
{name: "label", type: "string"},
{name: "size", type: "number"},
]
returns: "void", // <- optional, may not be present
since: "API level 2.0" // <- optional, may not be present
deprecated: true // <- optional, may not be present
},
...
]
}
Run Code Online (Sandbox Code Playgroud)
我想获得这个输出(使用这个精确的缩进级别):
/**
* This is a jsDoc description for a function
*
* …Run Code Online (Sandbox Code Playgroud) 背景:到目前为止,我一直使用 Django 及其 ORM 来构建小型网站,因此哪个数据库(MySQL 与 PostgreSQL)在幕后完成所有工作并不是真正的问题。
最近我决定更多地了解这两者之间的差异。我刚刚读完这篇(长篇)文章,它探讨了索引在 PostgresSQL 中的工作原理,我对以下事实感到非常震惊:
“例如,如果我们有一个定义了十几个索引的表,那么对仅由单个索引覆盖的字段的更新必须传播到所有 12 个索引中,以反映新行的 ctid。”
我根本不是专家,但对我来说听起来很疯狂,在更新不涉及索引的字段时,这种超载应该是设计使然的。
此外,文章继续解释 PostgreSQL 复制策略如何不在逻辑级别工作,而是在磁盘级别工作,即主服务器向从服务器发送所有更改的列表(逐字节)以应用于磁盘而不是更多抽象指令,例如UPDATE <fields> ON <table> WHERE ....
虽然网上很多比较 MySQL 和 PostgreSQL 的短文一般都倾向于声称 PostgreSQL 在技术上更先进(ACID、JSON 支持等),但这两个问题对我来说似乎是严重的缺点。您能否确认这些陈述并可能指出有关这些问题的更多资源?
谢谢你。
我正在尝试设置openshift来发布我的django项目.我创建了一个可扩展的python3.3应用程序,预装了django,我添加了postgres9.2盒式磁带.
我发现dirs结构相当复杂但最后我注意到默认的示例项目位于apps-root/runtime/repo/wsgi/openshift /下,所以我将所有文件从这个目录移动到名为'backup'的文件夹中贴在我的项目上.
现在,当我访问我的网站时,我得到:
503 Service Unavailable
No server is available to handle this request.
Run Code Online (Sandbox Code Playgroud)
我读到这可能是由于HAproxy.我试图通过Openshift在线Web界面重启我的应用程序,但我仍然得到相同的错误.
所以:
1)我该如何解决这个问题?
2)如何将我的项目的根文件夹从apps-root/runtime/repo/wsgi/openshift /更改为我的git repo的根目录,这样我就没有不需要的文件夹(即/ wsgi/openshift /)我的本地和bitbucket回购?
更新:查看我得到的日志:
==> python/logs/appserver.log <==
server = server_class((host, port), handler_class)
File "/opt/rh/python33/root/usr/lib64/python3.3/socketserver.py", line 430, in __init__
self.server_bind()
File "/opt/rh/python33/root/usr/lib64/python3.3/wsgiref/simple_server.py", line 50, in server_bind
HTTPServer.server_bind(self)
File "/opt/rh/python33/root/usr/lib64/python3.3/http/server.py", line 135, in server_bind
socketserver.TCPServer.server_bind(self)
File "/opt/rh/python33/root/usr/lib64/python3.3/socketserver.py", line 441, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)
如果我在Express表中访问HAProxy状态页面,则"服务器状态"在"local-gear"和"backend"行中都是DOWN.
django ×3
django-admin ×1
http-upload ×1
indexing ×1
jinja2 ×1
nunjucks ×1
openshift ×1
postgresql ×1
python ×1
templates ×1