jsonate είναι μια βιβλιοθήκη Django που μπορεί να κάνει τίποτα σε JSON.
installation
& Nbsp? 1. Εγκαταστήστε lib με PIP:
& Nbsp? & Nbsp? & Nbsp? Pip εγκαταστήσετε jsonate
& Nbsp? & Nbsp? & Nbsp? ** - Ή - **
& Nbsp? & Nbsp? & Nbsp? Βάλτε το "jsonate" κατάλογο κάπου στην πορεία python σας
& Nbsp? 2. Προσθέστε "jsonate" σε εγκατεστημένες εφαρμογές σας (στην settings.py αρχείο)
Χρήση
Στην πρότυπα
& Nbsp? & Nbsp? & Nbsp? {% Φορτίο jsonate_tags%}
& Nbsp? & Nbsp? & Nbsp? {{Τίποτα | jsonate}}
Αυτό είναι ιδιαίτερα χρήσιμο για την ενσωμάτωση των δεδομένων στο χαρακτηριστικά δεδομένα για
χρησιμοποιήσετε με βιβλιοθήκες javascript όπως jQuery (σημείωση jsonate-attr είναι ταυτόσημη με jsonate | διαφυγής):
& Nbsp? & Nbsp? & Nbsp?
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp?
Ή απλά να το χρησιμοποιήσει άμεσα σε javascript ...
& Nbsp? & Nbsp? & Nbsp?
Στην Python
& Nbsp? & Nbsp? & Nbsp? από jsonate jsonate εισαγωγής
& Nbsp? & Nbsp? & Nbsp? # Querysets
& Nbsp? & Nbsp? & Nbsp? JSON = jsonate (User.objects.all ())
& Nbsp? & Nbsp? & Nbsp? # Τιμές
& Nbsp? & Nbsp? & Nbsp? JSON = jsonate (User.objects.values ())
& Nbsp? & Nbsp? & Nbsp? # Περιπτώσεις μοντέλο
& Nbsp? & Nbsp? & Nbsp? JSON = jsonate (User.objects.get (e-mail = "my_email@gmail.com"))
Jsonate μετατρέπει datetimes σε μορφή ISO για εύκολη parsing σε javascript
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? # Διαμορφωμένη απάντηση για την ευκολία της ανάγνωσης ...
& Nbsp? & Nbsp? & Nbsp? >>> Jsonate εκτύπωσης (User.objects.all () [0])
& Nbsp? & Nbsp? & Nbsp? {
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Username": "asdfasdf»,
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "FIRST_NAME": "asdf",
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "LAST_NAME": "asdf",
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Is_active": ψευδής,
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "E-mail": "asdf@example.com»,
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Is_superuser": ψευδής,
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Is_staff": ψευδής,
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Last_login": "2011-08-22T19: 14: 50,603531"
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "ID": 5,
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Date_joined": "2011-08-22T19: 14: 50.220049"
& Nbsp? & Nbsp? & Nbsp? }
Πεδία / Εξαίρεση επιλογές
Μπορείτε να καθορίσετε ποια πεδία θα συνέχειες στο meta επιλογές
τα μοντέλα σας. Αυτό επηρεάζει την σειριακή μοντέλου περιπτώσεις, και querysets,
ακριβώς όπως το διαχειριστή!
Παράδειγμα
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? κατηγορία MyModel (models.Model):
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? normal_info = models.CharField (MAX_LENGTH = 10)
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? sensitive_info = models.CharField (MAX_LENGTH = 10)
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? Μέτα κατηγορία:
jsonate_exclude = («sensitive_info»,)
# Αυτό θα εργαστεί επίσης:
# Jsonate_fields = («normal_info»,)
Εξ ορισμού το μοντέλο χρήστη σε `django.contrib.auth.models` είναι μαϊμού-patched
να αποκλείσει το πεδίο κωδικού πρόσβασης όταν σειριοποίησης querysets ή περιπτώσεις
Αν θέλετε να καθορίσει ποια πεδία θα συνέχειες σε μια βάση ανά περίπτωση,
χρησιμοποιήσετε το `τιμές ()` αντ 'αυτού. όπως τόσοι
& Nbsp? & Nbsp? & Nbsp? >>> Jsonate (User.objects.values ("όνομα", "password"))
& Nbsp? & Nbsp? & Nbsp? ... «[{" Username ":" someuser "," password ":" SHA1 $ f26b2 $ d03a6123487fce20aabcdef0987654321abcdef0 "}]»
Σημείωση: Αυτό δεν είναι προφανώς ένα πραγματικό κωδικό πρόσβασης ή αλάτι :)
Η JsonateResponse
`JsonateResponse` είναι μια υποκατηγορία της HttpResponse που λειτουργεί σχεδόν ακριβώς
η ίδια, εκτός από το ότι δέχεται οποιοδήποτε αντικείμενο, όπως είναι τα δεδομένα και όχι μόνο
χορδές. Επιστρέφει το προκύπτον JSON ως mimetype "application / JSON"
παράδειγμα:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? από jsonate.http JsonateResponse εισαγωγής
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? def my_view (αίτηση):
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? ...
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? επιστρέψει JsonateResponse (request.user)
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? # Απάντηση περιέχει:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? {"Username": "asdfasdf", "FIRST_NAME": "asdf", "LAST_NAME": "asdf", "is_active": false, "e-mail": "asdf@example.com", "is_superuser": false, " is_staff ": false," last_login ":" 2011-08-22T19: 14: 50.603531 "," ID ": 5,« date_joined ":" 2011-08-22T19: 14: 50.220049 "}
Διακοσμητής
Το `JsonateResponse` είναι μεγάλη, αλλά η ζωή θα μπορούσε να πάρει ακόμη πιο εύκολη! Ο
`@ Jsonate_request` διακοσμητής (εμπνευσμένο από τον διακοσμητή ajax_request
σε Django-ενοχλητικό) θα προσπαθήσει να σε συνέχειες τίποτα μια άποψη αποδόσεις
(Μέσω JsonateResponse) να επιστρέψει σε μια HttpResponse με mimetype
"Application / JSON"
Το μόνο πράγμα που θα * δεν * προσπαθήσει να σε συνέχειες είναι μια HttpResponse.
παράδειγμα:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? jsonate_request
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? def my_view (αίτηση):
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? μορφή = MyForm (request.POST)
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? εάν form.is_valid ():
form.save ()
επιστρέψει HttpResponseRedirect ("/ κάποια / path /")
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? άλλο:
επιστρέφουν form.errors
Με την έγκυρη εισαγωγή, το HttpResponseRedirect περνά μέσα, ανέγγιχτη.
Εάν υπάρχουν σφάλματα μορφή η απάντηση έρχεται πίσω αναζητούν κάτι σαν
αυτό:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? {
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Username": [
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Αυτό το όνομα χρήστη είναι ήδη ληφθεί"
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? ],
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "E-mail": [
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου."
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? ]
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? }
Απαιτήσεις :
- Python
Τα σχόλια δεν βρέθηκε