Получить информацию о пользователе после предоставления первичного ключа в Django Rest Framework - PullRequest
0 голосов
/ 16 февраля 2020

Неправильно настроен на /api/account/profile/36 Не удалось разрешить URL-адрес для связи с гиперссылкой, используя имя представления «account-detail». Возможно, вам не удалось включить соответствующую модель в API или неправильно настроить атрибут lookup_field в этом поле.

views.py

@api_view(['GET', ])
def retrieve_user_account_view(self, pk):
    user_account = query_db(pk)
    factory = APIRequestFactory()
    request = factory.get('/')
    serializer = AccountSerializer(instance=user_account, context={'request': 
        Request(request)})
    return JsonResponse(serializer.data)

serializers.py

class AccountSerializer(serializers.HyperlinkedModelSerializer):
    confirm_password = serializers.CharField(style={'input_type': 'password'}, write_only=True)

    class Meta:
        model = Account
        fields = ('url', 'id', 'full_name', 'email', 'password', 
                  'confirm_password',
                  'date_created', 'last_updated', 'phone_number', 'status')
        extra_kwargs = {
                  'password': {'write_only': True}
        }

models.py

class Account(models.Model):
    full_name = models.CharField(max_length=255)
    email = models.EmailField(unique=True)
    password = models.CharField(max_length=255)
    date_created = models.DateTimeField(auto_now_add=True)
    last_updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=12, auto_created=True, 
        default='ACTIVE')
    phone_number = PhoneNumberField(region='NG')

    class Meta:
        ordering = ['date_created']

urls.py

from account.api.views import(
    user_account_registration_view,
    retrieve_user_account_view,
    update_user_account_view,
    delete_user_account_view,
)

app_name = "account"

urlpatterns = [
    path('register', user_account_registration_view, name="register"),
    path('profile/<int:pk>', retrieve_user_account_view, name="retrieve"),
    path('profile/update/<int:pk>', update_user_account_view, name="update"),
    path('profile/delete/<int:pk>', delete_user_account_view, name="delete"),
]

1 Ответ

0 голосов
/ 16 февраля 2020

Я думаю, вам следует изменить второй путь с

path('profile/<int:pk>', retrieve_user_account_view, name="retrieve"),

на

path('profile/<int:pk>', retrieve_user_account_view, name="account-detail"),

Или просто передать view_name через extra_args в вашем HyperlinkedModelSerializer

Как определяются гиперссылки

...