2015-11-22 3 views
1

Je travaille sur Django-rest-framework depuis quelques mois. Je n'ai pas bien compris comment la demande de JSON peut être utilisée. Pourriez-vous m'aider s'il vous plaît, je suis resté coincé ici pendant des mois.Utilisation de données JSON dans les vues

J'ai un extrait de HTML tiers sur un autre site et permet de supposer qu'il envoie ces données JSON

[{"idcomment":1,"isFlagged":false,"isDeleted":false,"isApproved":true,"createdAt":"2015-11-22T12:39:33Z","numReports":0,"isEdited":false,"message":"xcvvzvc","isSpam":false,"isHighlighted":false,"ip_address":"","is_public":true,"tree_path":"0000000001","tone":"Neutral","forum":1,"parent":null,"topic":1,"last_child":null,"user":1}][{"idcomment":1,"isFlagged":false,"isDeleted":false,"isApproved":true,"createdAt":"2015-11-22T12:39:33Z","numReports":0,"isEdited":false,"message":"xcvvzvc","isSpam":false,"isHighlighted":false,"ip_address":"","is_public":true,"tree_path":"0000000001","tone":"Neutral","forum":1,"parent":null,"topic":1,"last_child":null,"user":1}] 

Ma question: Comment puis-je utiliser ces données de demande de JSON et faire une vérification comme si le commentaire Appartient au sujet correct.

Je n'ai trouvé aucun exemple où c'est fait. J'ai donc pensé que c'était possible dans Flask en utilisant quelque chose comme ça.

mod.route("/create/", methods=["POST"]) 
def create(): 
    json = getJson(request) 
    check_required(json, ['date', 'thread', 'message', 'user', 'forum']) 
    uid = id_by_email(json['user']) 
    fid = id_by_sname(json['forum']) 
    if uid < 0 or fid < 0: 
     return send_resp(json) 
    if 'parent' in json: 
     parent = json['parent'] 
    else: 
     parent = None 
     json['parent'] = None 
    if 'isApproved' in json: 
     approved = json['isApproved'] 
    else: 
     approved = 0 
     json['isApproved'] = 0 
    if 'isHighlighted' in json: 
     highlighted = json['isHighlighted'] 
    else: 
     highlighted = 0 
     json['isHighlighted'] = 0 
    if 'isEdited' in json: 
     edited = json['isEdited'] 
    else: 
     edited = 0 
     json['isEdited'] = 0 
    if 'isSpam' in json: 
     spam = json['isSpam'] 
    else: 
     spam = 0 
     json['isSpam'] = 0 
    if 'isDeleted' in json: 
     deleted = json['isDeleted'] 
    else: 
     deleted = 0 
     json['isDeleted'] = 0 
    db.insert("""INSERT INTO posts (date,thread_id,message,user_id,forum_id,parent,approved,highlighted,edited,spam,deleted) 
       values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""", (
     json['date'], json['thread'], json['message'], uid, fid, parent, approved, highlighted, edited, spam, deleted)) 

    pid = db.query("SELECT LAST_INSERT_ID() as id")[0]['id'] 
    json['id'] = pid 
    return send_resp(json) 

Quelle est l'alternative pour quelque chose comme ça dans django-rest-framework. Je suis assez nouveau, alors s'il vous plaît expliquer dans un langage simple. Je n'ai pas besoin de code, je cherche simplement comment utiliser les requêtes json que je reçois sur le serveur.

Il est une évidence que j'ai lu la documentation à plusieurs reprises

Disclaimer: Je devras aussi partout à travers le django-rest-framework code

+0

django rest framework dispose d'une documentation très complète, qui comprend [un tutoriel détaillé] (http://www.django-rest-framework.org/#tutorial) et des exemples de travail qui couvrent entièrement ce que vous voulez. Avez-vous lu ça? – spectras

+0

@spectras Oui. Plusieurs fois – StackExchange

Répondre

1

Ce travail est pris en charge par votre classe sérialiseur:

Le La première chose dont nous avons besoin pour démarrer notre API Web est de fournir une méthode de sérialisation et de désérialisation des instances d'extraits de code en représentations telles que json. Nous pouvons le faire en déclarant les sérialiseurs qui fonctionnent très similaires aux formes de Django. Une classe de sérialiseur est très similaire à une classe de formulaire Django et inclut des indicateurs de validation similaires sur les différents champs, tels que requis, longueur maximale et valeur par défaut.

Si votre sérialiseur Hériter de serializer.ModelSerializer puis utilisez votre modèle ne valident vos données comme classe de formulaire héritant de form.ModelForm. Et oui, vous ne réécrivez aucun code pour valider vos données, et cela semble être magique. (DRY concept) Mais, bien sûr, vous pouvez définir et remplacer les validateurs de modèles dans votre classe de sérialiseur. Je recommande de relire Django-Rest-Framework et spécialement Serializer. Il explique toutes les classes de sérialiseurs que DRF fournit avec des cas d'utilisation.

+0

Donc je dois juste faire la vérification dans models.py? Si c'est aussi facile que cela puisse paraître, je vais faire la fête si fort. Je vous remercie. Je vais essayer – StackExchange

+0

Oui, dans de nombreux cas, c'est assez. Merci à Django-Rest-Framework, avec plusieurs lignes de code, vous pouvez faire des choses puissantes. Tout comme Django. :) La documentation de DRF est bien écrite puis lisez-la, vous trouverez tout ce dont vous avez besoin :) –

+0

Ouais, c'est une évidence, j'ai lu les docs plusieurs fois – StackExchange