【问题标题】:How can I override how rest-auth saves users?如何覆盖 rest-auth 保存用户的方式?
【发布时间】:2019-04-16 13:29:15
【问题描述】:

我的网站有一个 django 后端,它使用django-rest-auth 包进行身份验证。我想在 rest-auth 序列化程序中更改这个函数:

path_to_my_virtenv/lib/python3.7/site-packages/rest_auth/registration/serializers.py

class RegisterSerializer(serializers.Serializer): 

    def get_cleaned_data(self):
        return {
            'username': self.validated_data.get('username', ''),
            'password1': self.validated_data.get('password1', ''),
            'email': self.validated_data.get('email', '')
        }

我尝试直接编辑它,一切都按我的意愿工作,但是我怀疑在 virtenv 站点包中编辑文件不是一个好主意。有没有办法从我的 django 应用程序中覆盖它们?在我的情况下,最好的做法是什么?

【问题讨论】:

    标签: django django-rest-auth


    【解决方案1】:

    你是对的,编辑这个文件是最糟糕的选择。你不应该在你的本地机器上编辑第三方应用程序代码(除非你想测试一些极端情况)。

    Django Rest Auth 允许您更改所有端点的 Serializer 类,您可以在 documentation 上找到它。

    【讨论】:

    • 非常感谢,这个解决方案非常适合我。不过我想知道,如果我想在第三方应用程序中更改不提供更改文件设置的内容,我该怎么办?我应该在 github 上 fork 它,在那里更改并重新安装吗?或者我应该下载它的内容并直接在我的本地机器上将它们制作成我自己的应用程序?或者完全是别的什么?
    • @warpfactorten 如果不是紧急情况,您可以要求应用程序所有者添加此功能。但是如果你不想等待它,你应该分叉 github 并添加所需的功能。如果您的工作对其他人也有帮助,您甚至可以向原始 repo 打开一个拉取请求。在本地机器上编辑代码不好,原因有很多:它只保留在你的计算机中,你不能打包它,如果应用程序有更新,它就会消失等等......
    • zeynel 解释得很好,更改第三方应用程序代码非常危险。在下一次重新安装依赖项时,一切都会消失。而且在 git 中是无法追踪的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2021-07-30
    • 1970-01-01
    • 2021-07-22
    相关资源
    最近更新 更多