Home > database >  Can't get JSON data on console
Can't get JSON data on console

Time:01-07

Trying to console.log the data before rendering it on page but I keep getting 404 not found or not attributeName 'Porfile' don't have username as an attribute.

I'm a noob when it comes to JSON, I've only started messing around with it recently, please help it's for an assignment

JS:

$.ajax({
    type: 'GET',
    url: 'my-profile-json/',
    success: function(response){
        console.log(response);
    },
    error: function(error){
        console.log(error);
    }
});

Urls:


from django.urls import path
from django.conf import settings
from django.conf.urls.static import static

from . import views
from .views import (
    post_view_json,
    profile_test_view,

    MyProfileView,
    MyProfileData,
)


urlpatterns = [
    path("", views.index, name="index"),
    path("login", views.login_view, name="login"),
    path("logout", views.logout_view, name="logout"),
    path("register", views.register, name="register"),
    path("test", profile_test_view, name="test"),
    path("my/", MyProfileView.as_view(), name="my-profile-view"),
    path("my-profile-json/", MyProfileData.as_view(), name="my-profile-json"),

    # endpoints
    path("posts-json/", post_view_json, name="posts-view-json")
]

Views

from django.contrib.auth import authenticate, login, logout
from django.db import IntegrityError
from django.http import HttpResponse, HttpResponseRedirect
from django.http.response import JsonResponse
from django.shortcuts import render
from django.urls import reverse
from django.core import serializers

from .models import User, Post, Profile
from django.views.generic import TemplateView, View


class MyProfileData(View):
    def get(self, *args, **kwargs):
        profile = Profile.objects.get(user=self.request.user)
        qs = profile.get_proposals_for_following()
        profiles_to_follow_list = []
        for user in qs:
            p = Profile.objects.get(user__username=user.username)
            profile_item = {
                'id': p.id,
                'user': p.username,
                'avatar': p.avatar.url,
            }
            profiles_to_follow_list.append(profile_item)
        return JsonResponse({'pf_data': profiles_to_follow_list})

class MyProfileView(TemplateView):
    template_name = 'network/my_profile.html'

CodePudding user response:

Here you use p.username but it should most certainly be p.user.username:

profile_item = {
                'id': p.id,
                'user': p.username,
                'avatar': p.avatar.url,
            }
  •  Tags:  
  • Related