[PYTHON] CRUD POST avec Nuxt & Django REST Framework

Aperçu

Avant: Nuxt Backend: Django REST Framework (DRF) Lorsque j'ai lancé un nouveau projet, etc., il est devenu difficile de vérifier les paramètres, etc. un par un, donc je vais le résumer.

Cependant, écrire uniquement le fichier de paramètres ne suffit pas à titre personnel.

Donc, je prévois d'écrire jusqu'au point de mettre en œuvre l'enregistrement des membres en appuyant sur l'API, qui est l'opération de base, pour effectuer CRUD. Cette fois, DB utilise SQLite. Si vous souhaitez utiliser un autre RDB tel que PostgreSQL ou MySQL, réécrivez simplement les paramètres de la base de données du côté DRF, veuillez donc effectuer ces paramètres vous-même.

Pour le moment, dans cet article, j'ai frappé l'API créée par DRF à partir de Nuxt et POST le contenu entré dans le formulaire dans la base de données.

Le code source peut être trouvé à ici, donc si vous avez des questions, veuillez jeter un œil.

Vous pouvez également répondre en demandant à Twitter ou dans la section commentaires de cet article si vous avez des questions.

Dernière fois CRUD GET avec Nuxt & Django REST Framework ②

Mettre à jour l'emplacement

Back end

POST n'est pas possible car la vue et l'url requises pour DRF jusqu'à la date précédente n'ont pas été écrites.

La raison en est de n'autoriser que GET, le processus de réception d'informations. La raison en est que lorsqu'on considère une application qui peut être utilisée pratiquement, il est plus facile de gérer et de définir les autorisations si elle est divisée. Par exemple, avec les applications Web récentes, vous pouvez obtenir des informations sans vous inscrire en tant que membre, mais dans la plupart des cas, vous ne pouvez pas effectuer de POST sans vous inscrire en tant que membre, ou vous avez séparé cette autorité. Cependant, comme il y a des gens effrayants dans le monde, il est important de les empêcher d'être maltraités.

Donc cette fois, je vais commencer par ajouter à la vue et à l'url.

views.py


......
#ajouter à
class ItemCreateView(generics.CreateAPIView):
    serializer_class = ItemSerializer
    queryset = Item.objects.all()

urls.py


......
#ajouter à
path('items/add',ItemCreateView.as_view()),

Eh bien, en faisant ça

http://localhost:8000/api/items/add

Lorsque vous y accédez, vous pouvez maintenant POSTER comme suit.

スクリーンショット 2020-05-14 19.18.35.png

C'est le seul ajout du côté DRF! C'est merveilleux.

Passons au front-end.

l'extrémité avant

Ici, vous devez créer un formulaire et ajouter une page pour POST.

J'ai donc rédigé un formulaire simple. Aussi, concernant la logique, je l'ai écrit selon la grammaire de base d'axios.

addItem.vue


<template>
<v-card
    light
    :loading="isUpdating"
  >
    <div id="app">
    <v-app id="inspire">
    <v-form @submit.prevent="submitItem">
      <v-container>
        <v-row>
          <v-col
            cols="12"
            md="4"
          >
            <v-text-field
              v-model="item.name"
              label="Nom du produit"
              required
            ></v-text-field>
          </v-col>
  
          <v-col
            cols="12"
            md="4"
          >
            <v-text-field
              v-model="item.category"
              :counter="10"
              label="Catégorie"
              required
            ></v-text-field>
          </v-col>
  
          <v-col
            cols="12"
            md="4"
          >
            <v-text-field
              v-model="item.price"
              label="prix"
              required
            ></v-text-field>
          </v-col>
          
          <v-col
            cols="12"
            md="4"
          >
            <v-text-field
              v-model="item.description"
              label="Description de l'article"
              required
            ></v-text-field>
          </v-col>
          <v-col
            cols="12"
            md="4"
          >
           <v-file-input
           v-model="item.image"
           label="Image du produit"
           filled
           prepend-icon="mdi-camera"
           ></v-file-input>
          </v-col>
          <v-card-actions>
      <v-spacer />
      <v-btn
        class="btn-primary"
        :loading="isUpdating"
        color="primary"
        depressed
        @click="isUpdating = true"
        type="submit"
      >
        <v-icon left>
          mdi-post
        </v-icon>
Ajouter un produit
      </v-btn>
    </v-card-actions>
        </v-row>
      </v-container>
    </v-form>
  </v-app>
</div>
</v-card>
</template>

<script>
export default {
  data () {
    return {
      item: {
        name: '',
        category: '',
        image: '',
        price: '',
        description: '',
      },
      preview: '',
      autoUpdate: true,
      isUpdating: false,
      title: 'Ajout de produit',
  }
  },
  watch: {
    isUpdating (val) {
      if (val) {
        setTimeout(() => (this.isUpdating = false), 3000)
      }
    }
  },
  methods: {
    createImage (file) {
      const reader = new FileReader()
      const vm = this
      reader.onload = (e) => {
        vm.preview = e.target.result
      }
      reader.readAsDataURL(file)
    },
    async submitItem () {
      const editeditem = this.item
       //if (editeditem.image.includes('http://)') !== -1) {
        //delete editeditem.image
      //}
      const config = {
        headers: { 'content-type': 'multipart/form-data' }
      }
      const formData = new FormData()
      for (const data in editeditem) {
        formData.append(data, editeditem[data])
      }
      try {
        const response = await this.$axios.$post('/items/add', formData, config) // eslint-disable-line
        this.$router.push('/items')
      } catch (e) {
        console.log(e)
      }
    }
  }
}
</script>

スクリーンショット 2020-05-15 8.56.48.png

Un formulaire comme celui-ci sortira. Et si vous remplissez ces champs et envoyez ...

スクリーンショット 2020-05-15 8.58.22.png

Il a été ajouté avec succès.

Je pensais que je l'écrivais, mais si je l'apprends et l'écris, cela fonctionnera, donc je pense personnellement qu'il est important de lire fermement le document sur axios.

Je recommande personnellement [axios] Installation et utilisation facile d'axios c'est ici.

Cet article est très facile à comprendre et mérite d'être lu.

~~ Je pense que le développement peut être fait très facilement si CRUD et les manuels d'inscription des membres sont créés, donc la prochaine fois, j'écrirai sur la façon de corriger les informations et de les supprimer, c'est-à-dire PUT et DELETE. ~~

j'ai écrit CRUD PUT, DELETE avec Nuxt & Django REST Framework

Recommended Posts

CRUD POST avec Nuxt & Django REST Framework
CRUD GET avec Nuxt & Django REST Framework ②
CRUD GET avec Nuxt & Django REST Framework ①
Framework Django REST avec Vue.js
Connectez-vous avec Django Rest Framework
[Django] Utiliser MessagePack avec le framework Django REST
CRUD avec Django
Implémentation de CRUD à l'aide de l'API REST avec Python + Django Rest framework + igGrid
Bases du framework Django REST
Astuces Django Rest Framework
Implémentation de la fonction d'authentification dans Django REST Framework à l'aide de djoser
Créer une application Todo avec Django REST Framework + Angular
Plus de nouvelles méthodes d'authentification des utilisateurs avec Django REST Framework
Essayez de créer une application Todo avec le framework Django REST
Créer une API autour de l'authentification des utilisateurs avec Django REST Framework
Comment générer automatiquement un document API avec le framework Django REST et POST à partir de l'écran de document
Lorsque vous souhaitez filtrer avec le framework Django REST
Bloc d'achoppement du framework Django REST
Implémenter des URL hiérarchiques avec des routeurs imbriqués drf dans le framework Django REST
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
Suppression logique dans Django, DRF (Django REST Framework)
Comprendre la commodité de Django Rest Framework
Notes diverses sur le framework Django REST
Django REST Framework + Considération de conception d'architecture propre
Comment gérer les caractères déformés dans json de Django REST Framework
Générer et publier des données d'image factice avec Django
Internationalisation avec Django
Framework Django REST Un peu utile à savoir.
Implémenter la fonctionnalité de connexion JWT dans le framework Django REST
Parfois, vous souhaitez accéder aux informations de vue depuis Serializer avec DRF (Django REST Framework)
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
List, méthode pour les ressources imbriquées dans le framework Django REST
Implémentez l'API à une vitesse explosive en utilisant Django REST Framework
[Django Rest Framework] Personnalisez la fonction de filtre à l'aide de Django-Filter
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
Django 1.11 a démarré avec Python3.6
Résumé du développement avec Django
Framework Web Django Python
Sortie PDF avec Django
Sortie Markdown avec Django
Utiliser Gentelella avec Django
Twitter OAuth avec Django
Premiers pas avec Django 1
Envoyer des e-mails avec Django
Téléchargement de fichiers avec django
Utilisez LESS avec Django
La mutualisation mécanise avec Django
Utiliser MySQL avec Django
Django à partir d'aujourd'hui
Premiers pas avec Django 2
Comment écrire une validation personnalisée dans Django REST Framework
Éliminez les erreurs qui se produisent lors de l'utilisation de Django REST Swagger avec Django 3.0
La première API à créer avec le framework Python Djnago REST
Comment réinitialiser le mot de passe via l'API à l'aide du framework Rest Django
Décorateurs du cadre de repos Django ʻaction decorator remplace list_route et detail_route`
[Django] Redirection vers la page précédente après avoir soumis le formulaire POST