在Django中扩展/修改外部应用程序视图的正确方法是什么?

时间:2012-02-09 10:23:53

标签: django django-templates django-views

我正在开发一个Django项目,我有一些安装在我的虚拟环境中的外部应用程序。

其中一个应用有一项功能,可以通过定义def upload来上传文件,并在/upload

中将urls.py路由到该文件

现在我想在方法中添加@login_required等功能,或者将request.user与参数一起发送。

我可以通过直接更改为外部应用程序代码来实现,但如果应用程序升级,它将会中断。

我尝试将应用的views.py复制到同名的本地app文件夹,并在那里编写我自己的代码,但它似乎不起作用(作为模板修改)< / p>

我还有其他选择吗?谢谢!

1 个答案:

答案 0 :(得分: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)

在外部应用网址之前,您只需要确保自己的网址格式指向网址配置中的自定义视图