2012-02-09 34 views
0

我正在開發一個Django項目,並且我有幾個安裝到我的虛擬環境中的外部應用程序。在Django中擴展/修改外部應用程序視圖的正確方法是什麼?

其中一個應用程序有一個功能,通過在urls.py

定義def upload和路由/upload將其上傳文件現在我想添加一些功能,如@login_required的方法或發送request.user在一起與參數。

我可以通過直接更改外部應用程序代碼來實現,但是如果應用程序升級,它會中斷。

我嘗試將應用程序的的views.py複製到我的本地app文件夾下的同名且有寫我自己的代碼,但它似乎沒有工作(作爲模板修改)

是否有其他的選擇爲了我 ?謝謝 !

+1

FWIW,如果你需要做的是用裝飾器包裝視圖,你可以在urls.py中做到這一點:'(r'/ some/view /',login_required(upload_view))' – 2012-02-09 15:26:38

回答

2

您可以用自己的視圖來包裝外部應用程序的視圖。在你自己的views.py

from external_app.views import upload_view 

@login_required 
def custom_upload_view(self, request, *args, **kwargs): 
    # Do something before 
    ... 
    return upload_view(request, *args, **kwargs) 

你只需要確保你有你自己的URL模式指向您的自定義視圖在您的網址配置外部應用程序的URL之前

+0

我可以將它們添加到任何現有的視圖嗎?還是應該爲此創建新的應用程序? – w00d 2012-02-09 14:04:11

相關問題