私のビュー callable では、ユーザーが filename という名前の新しいファイルを次のように作成できるようにしたいと考えています。
@view_config(route_name='home_page', renderer='templates/edit.pt')
def home_page(request):
if 'form.submitted' in request.params:
name= request.params['name']
input_file=request.POST['stl'].filename
vertices, normals = [],[]
for line in input_file:
parts = line.split()
if parts[0] == 'vertex':
vertices.append(map(float, parts[1:4]))
elif parts[0] == 'facet':
normals.append(map(float, parts[2:5]))
ordering=[]
N=len(normals)
...parsing data...
data=[vertices,ordering]
jsdata=json.dumps(data)
renderer_dict = dict(name=name,data=jsdata)
app_dir = request.registry.settings['upload_dir']
filename = "%s/%s" % ( app_dir , name )
html_string = render('tutorial:templates/view.pt', renderer_dict, request=request)
with open(filename,'w') as file:
file.write(new_comment)
return HTTPFound(location=request.static_url('tutorial:pages/%(pagename)s.html' % {'pagename': name}))
return {}
現在、ファイルをアップロードしようとすると、次のエラー メッセージが表示されます: IOError: [Errno 2] No such file or directory: u'/path/pages/one'
(1 つは name 変数です) app_dir 変数を正しく定義していないためだと思います。filename を、上で定義した name 変数で作成される新しいファイルの URL にしたい (www.domain.com/pages/name でアクセスできるようにするため)。私のアプリのファイル構造は次のとおりです。
env
tutorial
tutorial
templates
home.pt
static
pages
(name1)
(name2)
(name3)
....
views.py
__init__.py
私のinit .pyには次のものがあります:
config.add_static_view(name='path/pages/', path=config.registry.settings['upload_dir'])
私の development.ini ファイルには
[app:main]
use = egg:tutorial
upload_dir = /path/pages
編集:この質問があまり注目されていない理由について誰かが考えを持っているなら、ぜひ聞いてみたい.