Vartotojo duomenų rodymas naudojant „JavaScript“ gavimą: profiliai ir įrašai
Vienas iš populiarių „JavaScript“ API sąveikos galimybių naudojimo atvejų yra duomenų gavimas ir rodymas realiuoju laiku iš užpakalinės programos. Šiuo atveju norite gauti informaciją iš dviejų susietų lentelių: viena susijusi su vartotojo įrašais, o kita su jo profiliu. Tai puikus būdas išmokti dinamiškai pateikti kelis duomenų rinkinius savo tinklalapyje ir tvarkyti juos vienu API iškvietimu.
The Gauti API turi būti naudojamas norint nuskaityti duomenis iš užpakalinės programos, kad galėtumėte tęsti. „JavaScript“ analizuos JSON atsakymas kurį grąžina Python API, kurioje yra profilis ir įrašai. Galite tinkamai rodyti profilį ir paskelbti informaciją, jei žinote, kaip dirbti su DOM naudojant „JavaScript“.
Nors tai gali atrodyti sudėtinga, duomenų gavimas iš kelių lentelių iš tikrųjų yra įmanomas, jei žinote, kaip struktūrizuotas atsakymas. Turite apdoroti JSON duomenys ir sukonstruoti HTML elementus, kad jie būtų rodomi pateikus užklausą. Sąrašų ar skilčių, skirtų naudotojų profiliams ir su jais susijusiems įrašams, kūrimas – tai dalis.
Šioje mokymo programoje pateiksiu jums realų pavyzdį, kuris naudoja „JavaScript“ įrašų duomenims ir naudotojų profiliams įkelti iš „Python“ API. Suprasite, kaip pateikti gautus duomenis iki galo, ir įsitikinsite, kad jie tinkamai rodomi jūsų HTML puslapyje.
komandą | Naudojimo pavyzdys |
---|---|
fetch() | Norėdami pradėti tinklo užklausą ištekliams nuskaityti, naudokite šią komandą. Čia jis naudojamas norint gauti įrašus ir vartotojo profilį per Python backend API galutinį tašką. |
.then() | Pažado, kad fetch() grąžina, valdymo procedūra. Kai atsakymas bus tinkamai nuskaitytas, duomenų tvarkymo procesas atliekamas konvertuojant jį į JSON naudojant funkciją.then(). |
response.json() | Atsakymo JSON korpusas analizuojamas naudojant šią techniką. Tai būtina dirbant su API, kurios teikia JSON formato duomenis, pvz., įrašus ir naudotojų profilius. |
createElement() | Ši JavaScript DOM technika dinamiškai sukuria HTML elementą. Sukurti ir rodyti komponentus, pvz., vartotojų profilius ir skelbti medžiagą, pagamintą iš gautų duomenų, yra du pagrindiniai jo naudojimo būdai. |
append() | Sukurti elementai įterpiami kaip galutinis pasirinkto pirminio mazgo vaikas, naudojant append() metodą. Ši technika naudojama į HTML sistemą įtraukti elementus, tokius kaip sekimo mygtukai, vartotojo informacija ir įrašai. |
JsonResponse() | Ši Django komanda sukuria HTTP atsakymą su duomenimis, užkoduotais JSON. Tai būtina norint siųsti įrašų ir profilio duomenis iš Python užpakalinės programos į „JavaScript“ sąsają apdoroti. |
values() | Django value() metodas sukuria užklausos rezultatų objektą, panašų į žodyną. Šiuo atveju jis naudojamas norint gauti įrašus, susijusius su konkrečiu autoriumi. |
Profile.DoesNotExist | Prašomo profilio negalima rasti duomenų bazėje, todėl atsiranda ši Django išimtis. Tai užtikrina, kad tuo atveju, jei profilis nerastas, API pateiks 404 klaidą kartu su naudingu pranešimu. |
TestCase | „Django“ vienetų testai parašyti naudojant „TestCase“ klasę. Tai būtina norint patikrinti API tikslumą ir užtikrinti, kad įrašai ir profilio duomenys būtų grąžinami norimu būdu įvairiomis sąlygomis. |
„JavaScript“ ir „Python“ integravimo dinaminiam turiniui supratimas
Įtraukti scenarijai parodo, kaip lengvai naudoti, bet efektyviai sujungti „JavaScript“ sąsają ir „Python“ pagrindinę programą. Dėl šios integracijos tinklalapis gali dinamiškai įkelti įrašų duomenis ir vartotojų profilius. The gauti API yra pagrindinė JavaScript kodo dalis; jis siunčia užklausą užpakalinei sistemai ir grąžina JSON atsakymą. The tada () technika kartu su pažadais leidžia scenarijui garantuoti asinchroninį duomenų įkėlimą. Šis metodas pagerina vartotojo patirtį, nes naršyklė neužšąla, kol ji laukia API atsakymo.
Naudodamas vartotojo ID, JavaScript kodas pateikia nuskaitymo užklausą Python API, kuri grąžina profilį ir paskelbimo duomenis. Scenarijus pirmiausia konvertuoja atsakymą į JSON prieš modifikuodamas DOM, kad būtų rodomas profilis ir įrašai. Tai daroma kurdama HTML elementus, tokius kaip pastraipos ir sąrašo elementai. Pavyzdžiui, naujai pastatytas div profilio duomenims rodyti naudojami vartotojo vardo, stebėtojų ir sekėjų elementai. Kiekviena informacijos dalis įtraukiama į puslapio profilio skiltį po to, kai įdėta į tinkamą HTML struktūrą.
„Django“ sukurta užpakalinė programa yra būtina norint gauti įrašų ir profilio duomenis iš duomenų bazės. The JsonResponse funkcija Python paverčia duomenis į JSON, kuris yra rekomenduojamas internetinių API formatų dėl lengvo analizavimo ir lengvo pobūdžio. The reikšmės () Django metodas garantuoja veiksmingą pranešimų gavimą žodyno formatu. Tokiu būdu sąsajai bus paprasta peržiūrėti įrašus ir dinamiškai juos pateikti svetainėje. The Profilis.Neegzistuoja Išimtį scenarijus naudoja, kad išspręstų galimas problemas ir užtikrintų, kad tais atvejais, kai duomenys nepasiekiami, būtų pateiktas tinkamas grįžtamasis ryšys.
Apskritai svetainė yra dinamiška ir gali keistis nereikalaujant viso puslapio įkėlimo iš naujo dėl Python ir JavaScript derinio. Ši strategija ypač gerai veikia tinklaraščiuose ir socialinių tinklų svetainėse, kur vartotojų sukurta informacija, įskaitant įrašus ir profilius, dažnai atnaujinama. Sprendimas tampa modulinis ir lengvai prižiūrimas laikantis geriausios praktikos ir suskirstant kodą į atskiras funkcijas. Be to, įtraukus vienetų testus garantuojama, kad profilio ir įrašų duomenys bus pateikti tiksliai ir kad API veiktų taip, kaip numatyta. Tai leidžia realaus laiko programoms optimizuoti našumą ir veiksmingiau tvarkyti klaidas.
„Python“ ir „JavaScript“ naudotojų profilių ir įrašų dinaminiam duomenų gavimui
Pagrindinė šio metodo idėja yra dinamiškai įkelti vartotojų profilius ir įrašus integruojant JavaScript sąsają su Python API vidiniu įrenginiu. Šis metodas naudoja „Django“ sistemą, skirtą „Python“ užpakalinėje programoje ir standartinį „JavaScript“.
// JavaScript Code to Fetch and Display Profile and Posts
function load_profile(author_id) {
// Fetch profile and posts from the backend
fetch(`/profile/${author_id}`)
.then(response => response.json())
.then(response => {
// Create a profile section
const content_profile = document.createElement('div');
content_profile.className = "content_profile";
const user = document.createElement('h3');
user.innerHTML = response.prof.user;
const followers = document.createElement('p');
followers.innerHTML = `Followers: ${response.prof.followers}`;
const following = document.createElement('p');
following.innerHTML = `Following: ${response.prof.following}`;
const followButton = document.createElement('button');
followButton.className = "btn btn-primary";
followButton.innerHTML = "Follow";
content_profile.append(user, followers, following, followButton);
document.querySelector('#profile').append(content_profile);
// Display posts
response.posts.forEach(post => {
const postList = document.createElement('ul');
const authorInfo = document.createElement('li');
authorInfo.innerHTML = `${post.author} at ${post.timestamp} says:`;
const content = document.createElement('li');
content.innerHTML = post.content;
const likes = document.createElement('li');
likes.innerHTML = `${post.like} Likes`;
postList.append(authorInfo, content, likes);
document.querySelector('#postbox').append(postList);
});
})
.catch(error => console.error('Error loading profile:', error));
}
„Python Django“ API rodinys, skirtas profiliui teikti ir duomenims skelbti
Lentelės „Profilis“ ir „Įrašai“ yra dvi susijusios lentelės, iš kurių šis Python Django rodinys nuskaito duomenis ir grąžina jį kaip JSON, kad būtų galima naudoti vartotojo sąsają.
from django.http import JsonResponse
from .models import Profile, Post
def profile_view(request, author_id):
try:
# Fetch profile and posts data
profile = Profile.objects.get(user_id=author_id)
posts = Post.objects.filter(author_id=author_id).values()
# Prepare the JSON response
return JsonResponse({
'prof': {
'user': profile.user.username,
'followers': profile.followers.count(),
'following': profile.following.count()
},
'posts': list(posts)
})
except Profile.DoesNotExist:
return JsonResponse({'error': 'Profile not found'}, status=404)
„Python Django View“ vieneto testas
Siekiant užtikrinti, kad duomenys būtų tinkamai aptarnaujami, šis vieneto testas patikrina, ar „Django“ API teisingai gauna vartotojo profilį ir įrašus.
from django.test import TestCase
from .models import Profile, Post
class ProfileViewTest(TestCase):
def setUp(self):
# Create test data
user = User.objects.create(username='testuser')
profile = Profile.objects.create(user=user)
Post.objects.create(author=user, content='Test post')
def test_profile_view(self):
# Make request to the API
response = self.client.get('/profile/testuser')
self.assertEqual(response.status_code, 200)
data = response.json()
# Check if profile data is correct
self.assertEqual(data['prof']['user'], 'testuser')
self.assertEqual(len(data['posts']), 1)
}
Efektyvus JSON duomenų tvarkymas dinaminėms žiniatinklio programoms
Veiksmingas JSON atsako tvarkymas yra labai svarbus dirbant su API, kurios pateikia duomenis iš daugelio šaltinių, įskaitant naudotojų profilius ir įrašus. Ankstesniame pavyzdyje panaudojome „JavaScript“, kad dinamiškai atnaujintume tinklalapį po duomenų iš „Python“ sistemos. Tačiau dirbant su jais taip pat labai svarbu išnaudoti visas JSON duomenų tvarkymo ir pateikimo galimybes. Galime pereiti per straipsnių masyvus naudodami tokias veiksmingas kilpas kaip už kiekvieną, ir sukonstruoti HTML elementus neįrašydami neapdoroto HTML į „JavaScript“ failą naudodami tokius metodus kaip sukurtiElementą. Šis metodas išlaiko kodo moduliškumą ir lengvą priežiūrą.
Klaidų tvarkymas ir duomenų patvirtinimas yra svarbūs papildomi veiksniai, į kuriuos reikia atsižvelgti. Jei nebus tinkamai tvarkoma, galinė dalis gali grąžinti netikslius arba trūkstamus duomenis, todėl gali kilti problemų sąsajoje. Galime išvengti neveikiančių išdėstymų ar „JavaScript“ problemų įdiegę atsarginę strategiją „JavaScript“ kode, pvz., nustatydami, ar atsakymą apima reikiamus duomenis prieš bandant juos parodyti. Patikimumas yra labai svarbus didelės apimties žiniatinklio programose, todėl tai ypač svarbu. Be to, naudojant Django's JsonResponse garantuoja, kad duomenys yra tinkamai suformatuoti, kad būtų galima naudoti frontend.
Ir galiausiai, dirbant su dinamišku turiniu, saugumas nuolat kelia susirūpinimą. Duomenų valymas prieš juos rodant yra vienas iš būdų tai ištaisyti ir sustabdyti saugos trūkumus, pvz., kryžminio scenarijaus (XSS) atakas. Stenkitės neįvesti potencialiai pavojingo kodo naudodami „JavaScript“ integruotas DOM modifikavimo galimybes, pvz. teksto Turinys, o ne innerHTML. Laikydamiesi šių gairių galite būti tikri, kad informacija jūsų tinklalapyje yra saugi ir patikima.
Dažni klausimai apie JSON duomenų tvarkymą naudojant „JavaScript“ ir „Python“.
- Kas daro fetch() geriau nei kiti AJAX metodai?
- fetch() siūlo šiuolaikišką, paprastą API HTTP užklausoms pateikti; pažadai naudojami asinchroninėms užduotims valdyti, todėl nereikia sudėtingų atgalinio ryšio mechanizmų.
- Kodėl yra response.json() naudojamas gaunant informaciją iš API?
- Norint paversti neapdorotą HTTP atsakymą į JSON objektą, kuris yra lengvai manipuliuojamas ir rodomas naudojant JavaScript, reikia atlikti 2 veiksmą.
- Kaip veikia forEach padėti rodyti duomenis JavaScript?
- forEach yra metodas, leidžiantis pereiti per masyvus, pvz., įrašų sąrašą, ir dinamiškai pridėti HTML elementus prie kiekvieno elemento.
- Koks yra vaidmuo JsonResponse Django API?
- Django įrankis vadinamas JsonResponse konvertuoja duomenis į JSON, kad sąsaja galėtų juos lengvai valdyti ir rodyti naudodama „JavaScript“.
- Kaip galima išvengti „JavaScript“ saugos trūkumų naudojant innerHTML?
- Norint apsisaugoti nuo XSS atakų, geriau naudoti JavaScript textContent arba 10 metodus, o ne suleisti potencialiai žalingą kodą.
Paskutinės mintys apie vartotojo duomenų gavimą ir rodymą
Dinaminėms svetainėms, integruojant JavaScript naudojant „Python“ užpakalinę programą duomenims nuskaityti ir rodyti yra veiksminga strategija. Visiškas puslapio įkėlimas iš naujo nėra būtinas norint garantuoti, kad vartotojo sąsaja atnaujinama efektyviai, kai naudojami tokie metodai atnešti Naudojami JSON atsakymai. Dėl to pagerėja bendra vartotojo patirtis.
Kuriant tokias programas reikia atsižvelgti į klaidų valdymą, saugumą ir optimizavimą. Programa bus atsparesnė, jei bus tvarkomi neišsamūs atsakymai ir bus užtikrinta duomenų valymas. Šis metodas suteikia tvirtą pagrindą ateityje į savo projektą įtraukti sudėtingesnių funkcijų.
Literatūra ir tolesnis skaitymas
- Šis turinys pagrįstas oficialiais Django tvarkymo dokumentais JsonResponse , kuriame pateikiamos išsamios įžvalgos apie tai, kaip JSON atsakymai veikia „Django“.
- Norėdami sužinoti daugiau apie JavaScript Gauti API MDN siūlo išsamią informaciją, kaip jį naudoti HTTP užklausoms teikti.
- Kitas naudingas DOM manipuliavimo su JavaScript šaltinis yra CreateElement dokumentacija iš MDN, kuris parodo, kaip dinamiškai kurti HTML elementus.
- Norėdami suprasti Python ir Django integraciją API kūrimui, oficialus Django projektas svetainėje pateikiamas išsamus vadovas.
- Norėdami sužinoti daugiau apie „JavaScript“ saugos spragų, pvz., XSS, prevenciją, OWASP turi naudingą vadovą Scenarijus tarp svetainių (XSS) išpuolių.