2012-02-09 7 views
0

私はDjangoプロジェクトに取り組んでいます。私はvirtual-envにインストールされているいくつかの外部アプリを持っています。Djangoで外部アプリケーションのビューを拡張/修正する正しい方法は何ですか?

アプリの一つは、今、私はこのような方法に@login_requiredまたは一緒request.userを送信など、いくつかの機能を追加したいurls.py

でそれにdef uploadとルート/uploadを定義することで、ファイルをアップロードする機能を持っていますパラメータと一緒に。

私は外部のアプリケーションコードに直接変更することができますが、アプリケーションをアップグレードすると壊れます。

私は、同じ名前の下に私の地元のappフォルダにアプリのviews.pyをコピーして、そこに自分のコードを記述しようとするが、(テンプレートの変更など)が動作していないよう

は、他のオプションがあります私のために ?ありがとう!

+1

FWIW前に、あなたのURLの設定でカスタムビューを指す独自のURLパターンを持っていることを確認する必要がありデコレータでビューをラップすると、urls.pyで実行できます。 '(r/some/view/'、login_required(upload_view))' –

答えて

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

+0

これらを既存のビューに追加できますか?この目的のために新しいアプリを作成すべきですか? – w00d

関連する問題