topwebmaster
@topwebmaster
Веб-программист, django, laravel, php, python

Почему django-rest-framework не разрешает сделать post запрос?

Вот мой код;
model.py

class Message(models.Model):

    FEEDBACK = 'feedback'
    NEW_FEATURE_IDEA = 'feature'
    BUG = 'bug'
    OTHER = 'other'

    MESSAGE_TYPE = (
        (FEEDBACK, 'Feedback'),
        (NEW_FEATURE_IDEA, 'New feature idea'),
        (BUG, 'Bug'),
        (OTHER, 'Other'),
    )

    user = models.ForeignKey(User, default='1', null=True, blank=True, on_delete=models.SET_NULL)
    title = models.CharField(blank=True, max_length=250)
    message = models.TextField()
    published_at = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)  # Время добавления
    updated = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)  # Время обновления
    message_type = models.CharField(choices=MESSAGE_TYPE, default=FEEDBACK, max_length=250)
    slug  = models.SlugField(unique=True)


    class Meta:
        ordering = ('-published_at', '-updated')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('message:detail')

    def get_api_url(self):
        return reverse("message:detail", kwargs={"slug": self.slug})



serializers

class MessageCreateUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Message
        fields = [
            'title',
            'message',
            'message_type',

        ]



views.py

class FPMessageCreateAPIView(CreateAPIView):
    permission_classes = [IsAuthenticated]
    queryset = FPMessage.objects.all()
    serializer_class = FPMessageCreateUpdateSerializer
    allowed_methods = ('POST', 'OPTIONS', 'HEAD')

    #
    def post(self, request, *args, **kwargs):
        print(request)
        serializer = FPMessageCreateUpdateSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

  • Вопрос задан
  • 654 просмотра
Решения вопроса 1
topwebmaster
@topwebmaster Автор вопроса
Веб-программист, django, laravel, php, python
urlpatterns = [
    url(r'^$', MessageListApiView.as_view()),
    url(r'(?P<slug>[\w-]+)/$', MessageDetailAPIView.as_view(), name="detail"), #этот вот ловил мне пол дня
    url(r'^create/$', MessageCreateAPIView.as_view(), name='create'),
]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
planc
@planc
мой хрустальный шар предсказаний говорит, что скорее всего проблема с cors
https://ru.wikipedia.org/wiki/Cross-origin_resourc...
https://github.com/ottoyiu/django-cors-headers/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы