2013-02-12 7 views
2

在我看來可調用的,我希望用戶能夠創建一個名爲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'(一個是名稱變量)我相信這是因爲我錯誤地定義了app_dir變量。我希望文件名是使用上面定義的名稱變量創建的新文件的URL(以便可以通過www.domain.com/pages/name訪問它)。這裏是我的應用程序的文件結構:

env 
    tutorial 
     tutorial 
      templates 
       home.pt 
      static 
       pages 
        (name1) 
        (name2) 
        (name3) 
        .... 
      views.py 
      __init__.py 

在我初始化的.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 

編輯:如果任何人有一個想法,爲什麼這個問題沒有得到太多的關注,我很樂意聽到它。

回答

4

雖然我覺得您可能對如何提供用戶生成的內容有誤解,但我會告訴您一種方法來執行您的要求。通常,用戶生成的內容不會上傳到您的源代碼中,您將在外面提供一些可配置的地點以放置它,如下所示。

使路徑通過您的INI文件配置:

[app:main] 
use = egg:tutorial 

upload_dir = /path/to/writable/upload/directory 

添加一個可該目錄下的服務的文件的靜態視圖。

config.add_static_view(name='/url/to/user_uploads', path=config.registry.settings['upload_dir']) 

在上傳查看您能得到您的app_dir通過

app_dir = request.registry.settings['upload_dir'] 

的數據複製那裏,從那以後它會提供/url/to/user_uploads/filename

+0

所以在這種情況下是不是「外部可配置點放置它」的頁面目錄?如果我使可寫,而不是路徑/到/可寫/上傳/目錄將工作?我已經更新了顯示我添加靜態視圖的問題。 – BigBoy1337 2013-02-13 05:27:50

+0

,你能解釋一下你在哪裏找到[app:main]的用法,並使用= egg:tutorial?我無法弄清楚他們的意思,在http://docs.pylonsproject.org/en/latest/docs/pyramid.html – BigBoy1337 2013-02-13 05:30:24

+0

中找不到任何有關這方面的信息當然,但在您的情況下,您要將上傳內容你的源代碼樹,這真的很不好意思。 – 2013-02-13 17:08:48

相關問題