Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当API版本发生变化时,如何管理Django Rest框架代码库?_Django_Api_Django Rest Framework_Versioning - Fatal编程技术网

当API版本发生变化时,如何管理Django Rest框架代码库?

当API版本发生变化时,如何管理Django Rest框架代码库?,django,api,django-rest-framework,versioning,Django,Api,Django Rest Framework,Versioning,有很多关于api版本控制的主题。但是许多人没有讨论版本控制如何影响代码库。当版本更改时,如何管理代码库?请举例说明 示例:版本1的代码库 默认版本控制:名称空间版本控制 型号: class Book(models.Model): name=models.CharFiedl(max_length=20) pages=models.IntegerField() 视图: 序列化程序: class BookSerializer(serializers.ModelSerializer):

有很多关于api版本控制的主题。但是许多人没有讨论版本控制如何影响代码库。当版本更改时,如何管理代码库?请举例说明

示例:版本1的代码库

默认版本控制:名称空间版本控制

型号:

class Book(models.Model):
    name=models.CharFiedl(max_length=20)
    pages=models.IntegerField()
视图:

序列化程序:

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        fields = ['name', 'pages']

当引入中断更改时,版本2的代码和文件夹结构会是什么样子?

通过python包,例如
views.py
可以划分为单独的
.py
文件。然后,根据所需的导入效果,如果url导入必须保持不变,则可以将url导入到
\uuuu init\uuuuu.py
文件中作为
from\uu导入*


假设您在
views.py
中有
View1
View2
;您可以将实现代码放在名为
视图
的文件夹中的单独文件中,使用
\uuuu init\uuuuuuuuuupy
进行如上导入-
从file1导入*

感谢您的回答。这意味着代码重复。为了简单起见,假设我们有两个django应用程序。应用程序1引入了突破性更改,并将版本控制为版本2。你是更改应用程序2的版本以保持一致性,还是将其保留在版本1?如果你想让旧版本继续工作,那么突破性的更改几乎总是意味着代码重复。这取决于你想要实现什么。但是如果您不想在App2_v1中使用App1_v2,那么使用App1_v2有什么意义?如果你不能一次更新所有内容,并且需要两个版本同时工作(扼杀模式),那么你需要复制。我想我不理解这个问题。您有App1 v1和v2,App2依赖于App1?如果是,那么如果您不在这里使用App1 v2,为什么还要麻烦呢?它们彼此独立。问题更多的是关于设计风格。即使应用程序2没有引入突破性的更改,在所有应用程序中保持版本相似是一个好主意吗?
class BookSerializer(serializers.ModelSerializer):
    class Meta:
        fields = ['name', 'pages']