我正在开发一个Django项目,我有一些安装在我的虚拟环境中的外部应用程序。
其中一个应用有一项功能,可以通过定义def upload
来上传文件,并在/upload
urls.py
路由到该文件
现在我想在方法中添加@login_required
等功能,或者将request.user
与参数一起发送。
我可以通过直接更改为外部应用程序代码来实现,但如果应用程序升级,它将会中断。
我尝试将应用的views.py
复制到同名的本地app
文件夹,并在那里编写我自己的代码,但它似乎不起作用(作为模板修改)< / p>
我还有其他选择吗?谢谢!
答案 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)
在外部应用网址之前,您只需要确保自己的网址格式指向网址配置中的自定义视图