Explication détaillée d'exemples de conversion de données de base de données au format JSON

零下一度
Libérer: 2017-07-21 16:24:54
original
3857 Les gens l'ont consulté

Je prévois de construire récemment une plateforme d'exploitation et de maintenance automatisée, je m'intéresse donc aux connaissances de Django.

Lors du développement du projet lui-même, nous avons rencontré un petit problème : l'interaction de données principale entre le front et le back end est JSON. Il est relativement simple pour le front-end de transférer des données vers le serveur. Ce qui est légèrement plus gênant, c'est que le côté serveur transfère le JSON vers le front-end.

Tout d'abord, les données sont obtenues à partir de la base de données. Django utilise la technologie ORM par défaut. Cependant, en tant que personnel d'exploitation et de maintenance, je suis en fait dégoûté par ce genre d'API abstraite. Parce que bien qu'il résume la table de base de données en un objet pour les développeurs, ce qui est pratique pour le développement et ne nécessite pas d'écriture d'instructions SQL, il est également responsable des goulots d'étranglement des performances dans les programmes ultérieurs (lors d'un nouveau dépannage, je rencontre un code SQL de 70 lignes). déclarations...). Pour un personnel d'exploitation et de maintenance, le SQL pur est une capacité de base, et l'apprentissage de la syntaxe de l'ORM augmentera le coût d'apprentissage.

Quoi qu'il en soit, le thème cette fois est de convertir les données obtenues à partir de la base de données en JSON. Ci-dessous, nous partagerons les méthodes ORM et SQL.

1. Utilisez la couche modèle Django et la technologie ORM pour convertir au format JSON

1 def getdata(request):2    # 使用ORM3    # all()返回的是QuerySet 数据类型;values()返回的是ValuesQuerySet 数据类型4    data = models.VM.objects.values('id', 'ip', 'host', 'username')5    data = serializers.serialize("json", tomcats)6    return JsonResponse(list(data), safe=False)
Copier après la connexion

2. Abandonnez complètement la couche modèle Django et convertissez le SQL pur au format JSON.

1 def getdata(request):2 # 使用SQL3     with connection.cursor() as cursor:4         cursor.execute('select id, machine, tomcathome, ipaddress, description from tomcatData')5         data = dictfetchall(cursor)6     return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii': False})
Copier après la connexion

Objet JsonResponse :

class <span class="highlighted">JsonResponse</span>(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None,**kwargs)

Cette classe est une sous-classe de HttpRespon. Sa principale différence par rapport à la classe parent est :

1. Son type de contenu par défaut est défini sur : application/json

2. , les données doivent être de type dictionnaire. Lorsque le paramètre safe est défini sur : False, les données peuvent être renseignées avec n'importe quel objet pouvant être converti au format JSON, tel qu'une liste, un tuple, un ensemble. Le paramètre sécurisé par défaut est True. Si le type de données que vous transmettez n'est pas un type de dictionnaire, une exception TypeError sera générée.

3. Le paramètre json_dumps_params est un dictionnaire, qui appellera la méthode json.dumps() et transmettra les paramètres du dictionnaire à la méthode.

Grâce à l'explication ci-dessus, les paramètres transmis dans JsonResponse() des deux méthodes ci-dessus sont très clairs.

De cette façon, les données seront transmises au front-end au format JSON, et le front-end pourra les obtenir en utilisant AJAX et les traiter ou les afficher.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!