在Django中,我希望在接收到任何不會以指定擴展名結尾的文件上載時立即停止。要做到這一點,我定義自定義上傳處理器和NEW_FILE寫這個樣子:Django文件上傳處理程序錯誤
def new_file(self, field_name, file_name, content_type, content_length, charset=None):
basename, extension = os.path.splitext(file_name)
if extension != ".txt":
raise StopUpload(True) # Error: Only .txt files are accepted
這正常停止上傳,但它也清除request.FILES。現在,當我的視圖收到請求時,它無法確定上傳處理程序是否導致文件丟失,並且我無法向用戶顯示有用的消息。
是否有任何方法將消息從上傳處理程序傳播到相應的視圖,以便我可以向用戶顯示錯誤?我試過使用請求對象,但它是不可變的。
仍然很好,謝謝。如果現代Django有更好的方式將這些數據傳遞給視圖,而不是請求.META,我很樂意聽到它。 – velotron 2012-12-12 18:28:33