Chcę utworzyć interfejs API, w którym użytkownik może zaktualizować swój profil. W moim przypadku użytkownik może zaktualizować swoją nazwę użytkownika i hasło. Aby zmienić swój profil, link interfejsu API powinien być /api/change/usernameOfThatUser
. Kiedy używam nieistniejącej nazwy użytkownika w linku, nadal otrzymuję stronę interfejsu API userProfileChange, a pola wprowadzania nie są wypełnione poprzednimi danymi. Jak mogę to rozwiązać?aktualizowanie profilu użytkownika przy użyciu środowiska django rest api
serializers.py
User = get_user_model()
class UserProfileChangeSerializer(ModelSerializer):
username = CharField(required=False, allow_blank=True, initial="current username")
class Meta:
model = User
fields = [
'username',
'password',
]
def update(self, instance, validated_data):
instance.username = validated_data.get('username',instance.username)
print('instance of username',instance.username)
return instance
views.py
class UserProfileChangeAPIView(UpdateAPIView):
serializer_class = UserProfileChangeSerializer
lookup_field = 'username'
urls.py
url(r'^change/(?P<username>[\w-]+)$', UserProfileChangeAPIView.as_view(), name='changeProfile'),
Co chcesz zrobić, gdy używasz nieistniejącej nazwy użytkownika w linku? –
Twoje pytanie nie ma sensu. "Jak mogę to rozwiązać?" << musisz nam powiedzieć, jakie zachowanie jest tutaj oczekiwane, ponieważ ten, którego masz, jest tym, którego oczekiwałbym. – Linovia
Załóżmy, że moja nazwa użytkownika to michael to, czego chcę, to jeśli chcę zmienić swoją nazwę użytkownika, to zrobiłbym/api/users/michael, a strona będzie wyświetlana z polem nazwa użytkownika i hasłem. W polu nazwa użytkownika moje imię będzie już wypełnione, a następnie edytuję je i zapiszę. – pri