Я могу успешно сделать запрос GET для моего / rest-auth / user / api с помощью axios и этого заголовка
{headers: { 'authorization': `Token ${token}`}}
Но когда я пытаюсь сделать запрос PUT, я получаю 401 несанкционированный. Это полный код моего запроса:
export const addCountry = (countries) => {
const token = localStorage.getItem('token');
return dispatch => {
dispatch(addCountryPending());
axios.put(
'http://localhost:8000/api/v1/rest-auth/user/',
{headers: { 'authorization': `Token ${token}`}},
{countries: countries}
)
.then(response => {
const user = response.data;
dispatch(addCountryFulfilled(user));
})
.catch(err => {
dispatch(addCountryRejected(err));
})
}
}
и мои разрешения Django установлены как
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
Кто-нибудь знает, что я делаю не так? Спасибо!
edit: представление по умолчанию / rest-auth / user / view, но я настроил сериализатор так:
class UserDetailSerializer(UserDetailsSerializer):
countries = serializers.SlugRelatedField(
many=True, slug_field='name',
queryset=Country.objects.all().order_by('pk')
)
count = serializers.IntegerField(read_only=True)
class Meta:
model = User
fields = ('pk', 'username', 'email', 'count', 'countries')
и у меня есть пользовательская модель:
class User(AbstractUser):
countries = models.ManyToManyField(Country, blank=True)
count = models.IntegerField(blank=True, default=0)
def save(self, *args, **kwargs):
# Must save model before Many To Many relationship can be used.
super(User, self).save(*args, **kwargs)
self.count = self.countries.count()
super(User, self).save(*args, **kwargs)
Я пытаюсь отправить запрос PUT со страной, чтобы добавить эту страну в список стран для аутентифицированного пользователя.