В момента имам този формуляр:
<form action="/store_stl_data" method="post" accept-charset="utf-8"
enctype="multipart/form-data">
<label for="stl">STL</label>
<input id="stl" name="stl" type="file" value="" />
<input type="submit" value="submit" />
</form>
тогава в моя views.py
имам
@view_config(route_name='store_stl_data', renderer='templates/edit')
def store_stl_data(request):
input_file=request.POST['stl'].file
i1, i2 = itertools.tee(input_file)
vertices = [map(float, line.split()[1:4])
for line in i1
if line.lstrip().startswith('vertex')]
normals = [map(float, line.split()[2:5])
for line in i2
if line.lstrip().startswith('facet')]
...(parsing data)...
return data
Трите реда под def store_stl_data(request):
са тези, за които най-много не съм сигурен. Взех ги от този урок.
Искам така, че когато хората качат файла, цялата функция store_stl_data
да работи и да обработва входния файл.
Точно сега ми дава грешка:
KeyError: "No key 'stl': Not a form request"
Ето и моя маршрут, в __init__.py
:
from pyramid.config import Configurator
from sqlalchemy import engine_from_config
from .models import (
DBSession,
Base,
)
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine)
Base.metadata.bind = engine
config = Configurator(settings=settings)
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('view_wiki', '/')
config.add_route('view_page', '/{pagename}')
config.add_route('add_page', '/add_page/{pagename}')
config.add_route('edit_page', '/{pagename}/edit_page')
config.scan()
return config.make_wsgi_app()
input_file
вече е отворен файлов обект. Не е необходимо да го отваряте отново. - person Martijn Pieters   schedule 17.01.2013store_stl_file
иstore_stl_data
? има ли две функции или едната е името на маршрута към името на функцията? - person Jonathan Vanasco   schedule 19.01.2013