2010-11-16 78 views
0

我有一個表單將路徑作爲輸入,分析該目錄中的文件和子文件夾,將信息存儲在數據庫中,然後向用戶顯示一些關於剛解析的文件的統計信息。這是使用Django視圖和render_to_response完成的。如何在django視圖中顯示POST產生的數據?

根據我讀過的所有內容,在處理POST時使用其他HttpResponseRedirect是不正確的,因爲使用POST數據生成的頁面會在刷新頁面時重新提交表單。

我的問題在於,由於分析提供的路徑中的文件,最終顯示了大量摘要數據。我如何使用httpResponseRedirect顯示數據?由於數據量的原因,使用django.core.urlresolvers.reverse作爲GET參數發送它似乎不可行。

回答

2
+0

我沒有想到這一點。 request.session是在服務器端維護的,而不是實際發送給請求本身的東西,所以這將允許我存儲在此報告中生成的大量數據並重定向到顯示它的頁面。我不熟悉Web開發,這似乎不是會話的預期用途,但它似乎是解決此問題的相對優雅的解決方案。謝謝。 – Nathan 2010-11-17 15:45:37

+0

這種方法最終非常流暢。我只是把我在request.session中創建的結果對象,然後在我重定向到的視圖中訪問它。 – Nathan 2010-11-17 18:16:17

0

我假設你的POST把手產生了一些DATABSE對象了提交的表單數據,這是正確的?如果是這樣,那麼你可以做這樣的事情(:

my_obj = MyModel.objects.create(**form.cleaned_data) # This is the part yuo already have, most probably expressed with some other code, but still.. 
    return HttpResponseRedirect('/url/to/redirect/?id=%d' % obj.id) 

重定向等應實際上使用reverse()功能,我認爲你應該有編輯爲MyModel對象的一個​​URL,那麼你可以這樣做:

return HttpResponseRedirect(reverse('edit-mymodel',(), {'id': obj.id})) 

相關網址如下所示:

url('^edit/mymodel/(?P<id>\d+)$', 'apps.myapp', name='edit-mymodel') 
+0

是的,我想過,但這裏的實際行爲是解析數千個日誌文件,在數據庫中創建數千個對象,然後顯示詳細的摘要統計信息。出於這個原因,很難看到我如何指向單個對象,除非我專門爲此操作的結果創建對象。這可能是最好的長期解決方案。 – Nathan 2010-11-17 15:28:56

+0

好吧,它看起來就像是一個自然的批量示例 - 添加Batch模型並使用ForeignKey將每個單獨的對象指向它,然後使用'batch.id'進行重定向。 – 2010-11-17 17:35:45

0

粗糙而簡單的解決方案是一個JSON文本文件中寫入數據,然後在你的重定向頁面閱讀(TH這也將節省您刷新頁面重建數據)