Django问题解决:HyperlinkedModelSerializer fails when app_name is configured and URLs added to app.

问题描述:
···
在Django的django-rest-framework框架学习过程中,遇到一个问题,就是在使用HyperlinkedModelSerializer这种类型的序列化器进行序列化时,会出现一种现象,表现为:
1:服务器状态会显示错误:Could not resolve URL for hyperlinked relationship using view name “XXX-detail”. You may have failed to include the related model in your API, or incorrectly configured the lookup_field attribute on this field.
2:数据库的字段已经写成功。
3:浏览器页面会报错,提示内容与服务器状态的错误信息相同,意思是在创建URL相关的链接详情信息时没有成功。
···

问题解决:

1
2
3
4
5
6
7
8
9
10
11
12
1:在app的urls中区分批量显示,与单个显示的路由,并在views文件中创建对应方法:
re_path(r'^users/$', views.UsersAPIView.as_view()),
re_path(r'^users/(?P<pk>\d+)/$', views.UserAPIView.as_view(), name='UserModels-detail'),

2:在app的serializers.py文件中,找到需要显示url的class,添加如下信息:
url = serializers.HyperlinkedIdentityField(view_name='XXXXXX')

3:设置详细的搜索地址,让序列化器能找到对应文件:
XXXXXX=app:UserModels-detail(此处的app的namespace=app,UserModels-detail为app的urls中创建的单个显示页面路由的name=UserModels-detail)

4:处理逻辑:
当通过浏览器访问localhost/app/users/时,通过路由转接views视图调用对应的方法,方法会引用序列号器进行数据序列化,序列号器会根据命名空间查找对应文件进行显示。