Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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
Python 如何使drf HyperlinkedModelSerializer与app_name完美配合?_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何使drf HyperlinkedModelSerializer与app_name完美配合?

Python 如何使drf HyperlinkedModelSerializer与app_name完美配合?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我在django项目中使用drf #项目/url.py 从django.url导入包括,路径 URL模式=[ ... 路径('drf/',include('api.url')), ... ] 在专用应用程序中,我通过app_name命名如下: #api/url.py 从django.url导入包括,路径 从rest_框架导入路由器 从…起导入视图 应用程序名称='drf' 路由器=路由器。SimpleRouter() router.register('segments',View.Segmen

我在django项目中使用drf

#项目/url.py
从django.url导入包括,路径
URL模式=[
...
路径('drf/',include('api.url')),
...
]
在专用应用程序中,我通过app_name命名如下:

#api/url.py
从django.url导入包括,路径
从rest_框架导入路由器
从…起导入视图
应用程序名称='drf'
路由器=路由器。SimpleRouter()
router.register('segments',View.SegmentViewSet)
URL模式=[
路径(“”,包括(router.url)),
]
#api/serializers.py
从rest_框架导入序列化程序
从段。模型导入段
类分段序列化程序(serializers.HyperlinkedModelSerializer):
类元:
模型=段
字段=['id','url','name']
#api/views.py
从rest\U框架导入视图集
从.serializers导入段序列化程序
从段。模型导入段
类分段视图集(viewsets.ModelViewSet):
queryset=Segment.objects.all()
serializer\u class=段序列化程序
调用端点/drf/segments/会导致以下错误:

在/drf/段配置不当/
无法使用视图名称“段详细信息”解析超链接关系的URL。您可能未能在API中包含相关模型,或者在此字段上错误配置了“lookup\u field”属性。
请求方法:获取
请求URL:http://localhost:8000/drf/segments/
Django版本:2.2.7
Python可执行文件:/Users/udos/.virtualenvs/ts/bin/Python
Python版本:3.6.4
.
.
.
要“修复”此问题,我必须向序列化程序添加以下代码:

url = serializers.HyperlinkedIdentityField(
    view_name='drf:segment-detail',
)
导致:

#api/serializers.py
从rest_框架导入序列化程序
从段。模型导入段
类分段序列化程序(serializers.HyperlinkedModelSerializer):
url=serializers.HyperlinkedEntityField(
视图\u name='drf:段详细信息',
)
类元:
模型=段
字段=['id','url','name']
我必须为所有实体这样做(我希望避免这样做)


有没有办法不用额外的代码来处理这个问题?要调用/设置的一些神奇方法/属性?

能否尝试明确传递命名空间:
path(“”,include(router.url,namespace='drf'))
?将其添加到
api/url.py
会导致错误
django.core.exceptions。配置不当:不支持在include()中指定命名空间而不提供应用程序名称。在包含的模块中设置app_name属性,或者传递一个包含模式列表和app_name的2元组。
不要删除
app_name
:|我没有。我使用了
path(“”,include(router.url,namespace=app_name))
我正在尝试做完全相同的事情。您是否设法解决了此问题?能否尝试明确传递命名空间:
path(“”,include(router.url,namespace='drf'))
?将其添加到
api/url.py
会导致错误
django.core.exceptions。配置不当:不支持在include()中指定命名空间而不提供应用程序名称。在包含的模块中设置app_name属性,或者传递一个包含模式列表和app_name的2元组。
不要删除
app_name
:|我没有。我使用了
path(“”,include(router.url,namespace=app_name))
我正在尝试做完全相同的事情。你设法解决了吗?