有没有一种简单的方法可以将List转换为MongoDBList(或BasicDBList)?
我在生产服务器上遇到unicode文件名问题.当我试图保存文件时,UnicodeEncodeError异常发生.Devserver工作正常.
www-data的所有语言环境都是'en_US.UTF-8'.
另外,我在/ etc/apache2/envvars中写下了
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
Run Code Online (Sandbox Code Playgroud)
它没有帮助.
locale.getdefaultlocale()返回(None,None),然后我将以下行添加到django.wsgi
os.environ['LANG']='en_US.UTF-8'
os.environ['LC_ALL']='en_US.UTF-8'
Run Code Online (Sandbox Code Playgroud)
locale.getdefaultlocale()开始返回后('en_US','UTF8')
我注意到sys.getdefaultencoding()返回'ascii',但我不知道如何解决它.
追溯:
Traceback:
File "/home/myproject/myproject.com/python/lib/python2.5/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/myproject/myproject.com/python/lib/python2.5/site-packages/django/contrib/admin/options.py" in wrapper
366. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/myproject/myproject.com/python/lib/python2.5/site-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/home/myproject/myproject.com/python/lib/python2.5/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
89. response = view_func(request, *args, **kwargs)
File "/home/myproject/myproject.com/python/lib/python2.5/site-packages/django/contrib/admin/sites.py" in inner
196. return view(request, *args, **kwargs)
File "/home/myproject/myproject.com/python/lib/python2.5/site-packages/django/utils/decorators.py" in _wrapper
25. return bound_func(*args, **kwargs)
File "/home/myproject/myproject.com/python/lib/python2.5/site-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, …
Run Code Online (Sandbox Code Playgroud) 我有Flask应用程序,看起来像这样:
from flask import Flask
app = Flask(__name__)
from pymongo import MongoClient
def get_db():
c = MongoClient()
return c.mydb
@app.route("/")
def hello():
db = get_db()
db.foo.find_one(...)
...
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
似乎它工作正常.但我不确定一件事.我在每个视图调用中创建一个MongoClient实例(以及与db的连接).但我应该关闭连接吗?
也许我应该在每个视图调用后关闭连接,如下所示:
@app.before_request
def before_request():
g.db = get_db()
@app.teardown_request
def teardown_request(exception):
g.db.close()
Run Code Online (Sandbox Code Playgroud)
你怎么处理这个东西?
我有以下模型:
class Post(Document):
body = db.StringField(required=True)
author = db.StringField(verbose_name="Author", max_length=255, required=True)
created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
comments = db.ListField(db.EmbeddedDocumentField('Comment'))
Run Code Online (Sandbox Code Playgroud)
和下面的视图:
from flask.ext.mongoengine.wtf import model_form
@app.route('/')
def home():
form = model_form(Post, exclude=('created_at', 'comments'))
return render_template('home.html', form=form)
Run Code Online (Sandbox Code Playgroud)
我不知道如何在模板中呈现此表单。我确实尝试了几件事:
{% for field in form %}
{{ field }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
TypeError: 'FormMeta' object is not iterable
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
{{ form.body() }}
Run Code Online (Sandbox Code Playgroud)
有不同的错误:
AttributeError: 'UnboundField' object has no attribute '__call__'
Run Code Online (Sandbox Code Playgroud)
和{{form.body}}这样的渲染
<UnboundField(TextAreaField, (), {'default': None, 'validators': [<wtforms.validators.Required object at 0x7f63804d0fd0>], 'description': '', 'filters': [], …
Run Code Online (Sandbox Code Playgroud)