2013-02-05 61 views
0

現在我的金字塔應用程序的主頁可以調用這個視圖,讓用戶在數據庫中添加新的「頁面」。這些網頁可以在單獨的網址上查看。如何讓用戶從模板創建文件系統上的html文件?

@view_config(route_name='home_page', renderer='templates/edit.pt') 
def home_page(request): 
    if 'form.submitted' in request.params: 
     name= request.params['name'] 
     body = request.params['body'] 

     page=Page(name,data) 
     new= DBSession.add(page) 
     return HTTPFound(location=request.route_url('view_page',pagename=name)) 

    return {} 

取而代之,我希望表單提交在服務器文件系統上創建一個全新的html頁面。這個html頁面應該採用我提供的模板格式,在提交時從主頁表單傳遞值。有沒有辦法做到這一點?我一直在尋找http://docs.pylonsproject.org並找不到方法。

回答

1

我相信你可以使用render渲染你的模板/上下文字符串

例如從this

renderer_dict = {} # dictionary of values to pass to the renderer 
new_comment = render('new_comment.pt', renderer_dict, request) 

既然你有一個HTML模板,一個第二要自定義它爲您用戶應該能夠通過render以正確的上下文運行它並將其保存到文件系統。

+0

那種有道理。如何一旦new_comment,我假設將是新的HTML文件呈現,我將如何將它保存到文件系統,並告訴它去哪裏? – BigBoy1337

+0

@ BigBoy1337'new_comment'是一個字符串,您可以使用python文件api將其寫入文件,http://docs.python.org/2/tutorial/inputoutput.html中有大量關於如何使用它的示例' f = open('/ path/to/file /','w'); f.write(new_comment); f.close()' – dm03514

+0

很酷。這就說得通了。請求值(第二行的最後一部分)被定義在哪裏?或者,我真的只是把'請求'放在那裏? – BigBoy1337

相關問題