我有一个应用程序,让人们上传文件,表示为UploadedFiles
.但是,我想确保用户只上传xml文件.我知道我可以使用magic
,但我不知道在哪里进行此检查 - 我无法将其放在clean
函数中,因为在clean
运行时文件尚未上传,据我所知.
这是UploadedFile
模型:
class UploadedFile(models.Model):
"""This represents a file that has been uploaded to the server."""
STATE_UPLOADED = 0
STATE_ANNOTATED = 1
STATE_PROCESSING = 2
STATE_PROCESSED = 4
STATES = (
(STATE_UPLOADED, "Uploaded"),
(STATE_ANNOTATED, "Annotated"),
(STATE_PROCESSING, "Processing"),
(STATE_PROCESSED, "Processed"),
)
status = models.SmallIntegerField(choices=STATES,
default=0, blank=True, null=True)
file = models.FileField(upload_to=settings.XML_ROOT)
project = models.ForeignKey(Project)
def __unicode__(self):
return self.file.name
def name(self):
return os.path.basename(self.file.name)
def save(self, *args, **kwargs):
if not self.status:
self.status = …
Run Code Online (Sandbox Code Playgroud) 我正在使用python的日志模块.如何从代码中访问配置文件中定义的处理程序.作为一个例子,我有一个定义的记录器和两个处理程序 - 一个用于屏幕,另一个用于文件.我想根据用户偏好使用适当的处理程序(无论他们是想登录屏幕还是文件).如何从配置文件中定义的记录器动态添加和删除配置文件中定义的处理程序?
[loggers]
keys=root,netmap
[handlers]
keys=fil,screen
[logger_root]
level=NOTSET
handlers=
[logger_netmap]
level=INFO
handlers=fil,screen
qualname=netmap
[formatters]
keys = simple
[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
[handler_fil]
class=handlers.RotatingFileHandler
args=('file.log','a','maxBytes=10000','backupCount=5')
formatter=simple
[handler_screen]
class=StreamHandler
args = (sys.stdout,)
formatter=simple
Run Code Online (Sandbox Code Playgroud)
根据用户是否使用-v运行程序,我需要使用File或Screen Handler之一.如何从netmap记录器添加或删除fil或screen处理程序?
我正在尝试用sphinx来记录我的一个项目.我在所有模块和文件中都使用了autodoc字符串.我使用sphinx-apidoc rst
为我的代码自动生成文件.到现在为止还挺好.
问题是sphinx无法导入我的任何模块,即使我已经添加了我的项目sys.path
.
我的单元测试通过,可以导入我的模块就好了.我的智慧结束了; 我已经尝试了各种重命名和移动,重新加载和重新配置而没有成功,至少可以说非常令人沮丧.
这是我的文档结构:
project
??? collectionprocessor.py
??? config.py
??? createdb.py
??? database
? ??? database.py
? ??? __init__.py
??? docs
? ??? _build
? ??? conf.py
? ??? generated
? ??? index.rst
? ??? Makefile
? ??? modules.rst
? ??? project.database.rst
? ??? project.document.rst
? ??? project.mixins.rst
? ??? project.parser.rst
? ??? project.rst
? ??? project.sequence.rst
? ??? project.tests.rst
? ??? _static
? ??? _templates
??? document
? ??? document.py
? ??? …
Run Code Online (Sandbox Code Playgroud) 我试图在AMD处理器上的Windows 7 64位上使用winpexpect.为此,我安装了名为pywin32的可执行文件pywin32-214.win-amd64-py2.7
.图形安装程序似乎成功运行,但是当我尝试导入时出现此错误winpexpect
:
>>> import winpexpect
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Alexei\wordseer_flask\venv\lib\site-packages\winpexpect.py", li
ne 11, in <module>
import pywintypes
File "C:\Users\Alexei\wordseer_flask\venv\lib\site-packages\pywin32-214-py2.7-
win32.egg\pywintypes.py", line 124, in <module>
__import_pywin32_system_module__("pywintypes", globals())
File "C:\Users\Alexei\wordseer_flask\venv\lib\site-packages\pywin32-214-py2.7-
win32.egg\pywintypes.py", line 64, in __import_pywin32_system_module__
import _win32sysloader
ImportError: DLL load failed: %1 is not a valid Win32 application.
Run Code Online (Sandbox Code Playgroud)
当我尝试运行时C:\Python27\Scripts\pywin32_postinstall
:
C:\Windows\system32>C:\Python27\Scripts\pywin32_postinstall.py -install
Traceback (most recent call last):
File "C:\Python27\Scripts\pywin32_postinstall.py", line 601, in <module>
install()
File "C:\Python27\Scripts\pywin32_postinstall.py", line 311, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 ubuntu 14.04 上的 virtualenv 内安装 lxml。
$ uname -a
Linux foobar 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
Run Code Online (Sandbox Code Playgroud)
我已经安装了依赖项,如 lxml 文档中指定的那样。以下是我安装的具体包:
$ dpkg-query -l | grep libxml
ii libxml-commons-external-java 1.4.01-2build1 all XML Commons external code - DOM, SAX, and JAXP, etc
ii libxml-commons-resolver1.1-java 1.2-7build1 all XML entity and URI resolver library
ii libxml-parser-perl 2.41-1build3 …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个带有蓝图的应用程序.我的应用程序使用Flask-SQLAlchemy,因此我的蓝图需要访问主应用程序的db
对象(由Flask-SQLAlchemy创建)才能创建自己的模型.
但是,当我试图获取db
对象时current_app.db
,flask会给我以下错误:
RuntimeError: working outside of application context
Run Code Online (Sandbox Code Playgroud)
这是我的主要内容__init__.py
:
from flask import Flask
from app.uploader import uploader
app = Flask(__name__)
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
app.register_blueprint(uploader)
Run Code Online (Sandbox Code Playgroud)
这是__init__.py
我的uploader
蓝图:
from flask import Blueprint
uploader = Blueprint('uploader', __name__,
template_folder='templates')
from . import views
from .models import *
Run Code Online (Sandbox Code Playgroud)
以下views.py
是发生异常的蓝图:
from flask import (redirect, render_template, request, send_from_directory,
session, current_app)
from flask.views import View
from werkzeug import secure_filename
print current_app.db …
Run Code Online (Sandbox Code Playgroud) 我正在设计一个页面,人们可以在其中查看和创建某种对象(对象是模型项目的实例).
据我所知,我不能在一个视图中没有可怕的杂乱代码,所以我试图理解如何使用一个模板来显示两个视图(ProjectCreateView和ProjectListView).
现在,这就是我正在使用的:
views.py:
class ProjectCreateView(CreateView):
model = Project
template_name = "fileupload/project_list.html"
fields = ["name"]
def get_context_data(self, **kwargs):
context = super(ProjectCreateView, self).get_context_data(**kwargs)
return context
class ProjectListView(ListView):
model = Project
def get_context_data(self, **kwargs):
context = super(ProjectListView, self).get_context_data(**kwargs)
return context
class ProjectView(View):
model = Project
def get(self, request, *args, **kwargs):
view = ProjectListView.as_view()
return view(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
view = ProjectCreateView.as_view()
return view(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
urls.py
urlpatterns = patterns('',
url(r'^projects/$', ProjectView.as_view(), name="projects"),
)
Run Code Online (Sandbox Code Playgroud)
models.py
class Project(models.Model):
name = …
Run Code Online (Sandbox Code Playgroud) 在我的表单上,我有两个按钮用于提交表单。一个按钮删除选定的文件(显示在表格中,一个复选框用于对象),另一个按钮选择它们进行处理。
当文件在删除时被选择时,不需要验证(除了检查是否至少选择了一个文件)。但是,为了进行处理,我需要确保只有一个具有特定扩展名的文件。基本上,我需要根据用户单击的按钮进行不同的验证过程。
我怎样才能最好地做到这一点?我知道我可以在视图中执行验证,但我更喜欢在表单内验证它,因为它更干净。
这是有问题的表格:
class ButtonWidget(object):
"""A widget to conveniently display buttons.
"""
def __call__(self, field, **kwargs):
if field.name is not None:
kwargs.setdefault('name', field.name)
if field.value is not None:
kwargs.setdefault('value', field.value)
kwargs.setdefault('type', "submit")
return HTMLString('<button %s>%s</button>' % (
html_params(**kwargs),
escape(field._value())
))
class ButtonField(Field):
"""A field to conveniently use buttons in flask forms.
"""
widget = ButtonWidget()
def __init__(self, text=None, name=None, value=None, **kwargs):
super(ButtonField, self).__init__(**kwargs)
self.text = text
self.value = value
if name is not None:
self.name = name
def …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用该对象在我的蓝图上注册一个新的 jinja 全局Blueprint
。然而,对象似乎Blueprint
没有jinja_env
属性;如何注册新的 jinja 全局属性?
这是__init__.py
蓝图,这不起作用:
from flask import Blueprint, current_app
uploader = Blueprint('uploader', __name__, template_folder='templates')
from . import views
from . import models
current_app.jinja_env.globals['form_token'] = views.generate_form_token
Run Code Online (Sandbox Code Playgroud)
这也不是:
uploader.jinja_env.globals['form_token'] = views.generate_form_token
Run Code Online (Sandbox Code Playgroud) 我有两个型号,Word
并且Sentence
,它有一个双向的许多一对多的关系.为了存储其他信息,我有一个关联对象,WordInSentence
.
class WordInSentence(Base):
__tablename__ = "word_in_sentence"
word_id = Column(Integer, ForeignKey('word.id'),
primary_key=True)
sentence_id = Column(Integer, ForeignKey('sentence.id'),
primary_key=True)
space_after = Column(String)
tag = Column(String)
position = Column(Integer)
word = relationship("Word",
backref=backref("word_sentences", lazy="dynamic"))
sentence = relationship("Sentence",
backref=backref("sentence_words", lazy="dynamic"))
class Sentence(Base):
text = Column(Text, index = True)
words = association_proxy("sentence_words", "word",
creator=lambda word: WordInSentence(word=word))
class Word(Base):
word = Column(String, index = True)
sentences = association_proxy("word_sentences", "sentence",
creator=lambda sent: WordInSentence(sentence=sent))
def __repr__(self):
return "<Word: " + str(self.word) + ">" …
Run Code Online (Sandbox Code Playgroud) python ×8
flask ×3
django ×2
django-views ×1
jinja2 ×1
logging ×1
lxml ×1
pip ×1
python-2.x ×1
pywin32 ×1
relationship ×1
sqlalchemy ×1
ubuntu ×1
wtforms ×1