Monday, January 22, 2018

Re: Calling api from django view error. forbidden (csrf token is missing or incorrect)

You will have to either get CSRF token and send it or ignore it completely. csrf_exempt from django.views.decorators.csrf will be helpful. For HttpResponse to returning a json, pass in a stringfied dict.

On Monday, January 22, 2018 at 5:06:35 AM UTC-5, chern...@gmail.com wrote:
The reason why im using this is because i am using integrating 2 different project. The api call is suppose to call the api from another app. Further more i also need to save some of the details the was get from both post and get method

On Monday, January 22, 2018 at 5:03:18 PM UTC+9, chern...@gmail.com wrote:

I seen alot of other solution, tried it but problem still persist.

When i do a requests.get, it works fine but when i'm doing requests.post. I got this forbidden (csrf token is missing or incorrect) error.


Here is my code

models.py

class TestPost(models.Model):      # reminderId = models.AutoField()      book = models.CharField(max_length=10, blank=True, null=True)      author = models.CharField(max_length=10, blank=True, null=True)      date = models.DateTimeField(blank=True, null=True)

serializer.py

class TestPostSerializer(serializers.ModelSerializer):      # valid_time_formats = ['%H:%M', '%I:%M%p', '%I:%M %p']      # time = serializers.TimeField(format='%I:%M %p', input_formats=valid_time_formats, allow_null=True)      date = serializers.DateTimeField(format="%Y-%m-%d %I:%M %p")        class Meta:          model = TestPost          fields = ('id', 'book', 'author', 'date')

views.py

from django.http import HttpResponse  import requests    def my_django_view(request):      if request.method == 'POST':          r = requests.post('http://127.0.0.1:8000/api/test/', params=request.POST)      else:          r = requests.get('http://127.0.0.1:8000/api/test/', params=request.GET)      if r.status_code == 200:          return HttpResponse('Yay, it worked')      return HttpResponse('Could not save data')    class TestPostViewSet(viewsets.ModelViewSet):      permission_classes = [AllowAny]      queryset = TestPost.objects.all()      serializer_class = TestPostSerializer


I did a POST method on the url of the function but error


Forbidden (CSRF token missing or incorrect.): /test/ [22/Jan/2018 16:59:09] "POST /test/ HTTP/1.1" 403 2502


Also, how do i make the HttpResponse to display the json data from my get and post method ?

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/a0cc440c-c79d-4b7c-9061-0a9f5f4b61c2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment