Я учу себя, как использовать Django REST API, но я сталкиваюсь с JSONDecodeError. Я пытаюсь отобразить сообщения в зависимости от пользователя, который хранится в сеансе. Я сохраняю имя пользователя, пароль и идентификатор в сеансе для последующего использования. JSONDecodeError направляется на строку с инструкцией posts = posts_response. json (), когда я смотрю на страницу ошибки HTML
Вот мои views.py:
posts_path = "http://127.0.0.1:8000/posts/"
def index(request):
if request.method=='GET':
post_form = PostForm()
posts_response = requests.get(posts_path)
posts = posts_response.json()
context = {
'post_form': post_form,
'post_list': posts,
}
return render(request, 'UserLanding/index.html', context)
else:
return render(request, "UserLanding/index.html")
Это мои просмотры:
class PostView(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
def get_queryset(self):
query_set = self.queryset.filter(user=self.request.session['id'])
return query_set
class SubscriberView(viewsets.ModelViewSet):
queryset = Subscriber.objects.all()
serializer_class = SubscriberSerializer
Мои зарегистрированные URL:
router = routers.DefaultRouter()
router.register('posts', viewsets.PostView)
router.register('users', viewsets.SubscriberView)
И сериализаторы:
class SubscriberSerializer(serializers.ModelSerializer):
class Meta:
model = Subscriber
fields = ('id', 'username', 'password')
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('id', 'post_text', 'pub_date', 'user')
Пожалуйста, помогите мне определить проблему. Заранее спасибо
РЕДАКТИРОВАТЬ: я смог решить проблему, добавив функцию в мой код PostView, как это:
@action(detail=False, methods=['GET'], url_path=r'(?P<user_id>[0-9]+)')
def find_by_user_id(self, request, user_id):
user = Subscriber.objects.get(id=user_id)
posts = Post.objects.filter(user=user)
serializer = self.serializer_class(posts, many=True)
return Response(serializer.data)
и мой request.get () теперь указывает на это:
posts_response = requests.get(posts_path + str(request.session['id']))