Subir imagen usando Django con Firebase

Firebase es un producto de Google que ayuda a los desarrolladores a crear, administrar y hacer crecer sus aplicaciones fácilmente. Ayuda a los desarrolladores a crear sus aplicaciones de forma más rápida y segura. No se requiere programación en el lado de firebase, lo que facilita el uso de sus funciones de manera más eficiente. Proporciona almacenamiento en la nube. Utiliza NoSQL para el almacenamiento de datos.

Aquí, vamos a aprender cómo podemos cargar imágenes usando Django en firebase. Mientras trabajamos con la base de datos, es posible que también necesitemos cargar un archivo pdf.

Implementación paso a paso

Paso 1: Primero, vamos a crear un proyecto en Firebase para conectar nuestra página web estática. Visite la página de Firebase para configurar su proyecto. Visite el sitio web y haga clic en el botón On Add Project como se muestra a continuación:

Paso 2: Asigne un nombre a su proyecto y haga clic en el botón Continuar.

Paso 3: Ahora haga clic en el botón Continuar.

Paso 4: Ahora elija Cuenta predeterminada para Firebase y haga clic en el botón Crear proyecto.

Paso 5: ahora su proyecto está creado y está listo para comenzar.

Paso 6: Ahora haga clic en el tercer ícono que es el botón Web (</>).

Paso 7: Asigne un apodo a su proyecto web y haga clic en el botón Registrar aplicación.

Paso 8: Ahora verás la configuración de tu App así. Copie este código en algún lugar, ya que lo usaremos más adelante.

Paso 9: haga clic en el botón Base de datos en tiempo real como se muestra en la figura.  

Paso 10: ahora haga clic en Crear base de datos.

Paso 11: Ahora haga clic en Modo de prueba y luego haga clic en Habilitar.

Paso 12: activa el almacenamiento de Firebase. Haga clic en el botón Almacenamiento a la izquierda y haga clic en Comenzar.

Después de eso, aparecerá este cuadro. Haga clic en Siguiente.

Luego haga clic en Listo.

Creando un proyecto en Django:

Use el siguiente comando para crear un proyecto Django:

$ django-admin startproject imageupload

Verifiquemos que su proyecto Django funcione. Cambie al directorio mysite externo , si aún no lo ha hecho, y ejecute los siguientes comandos:

$ python manage.py runserver

Verá el siguiente resultado en la línea de comando:

Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
April 09, 2021 - 15:50:53
Django version 3.2, using settings 'imageupload.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Integrando la base de datos de Firebase al proyecto Django:

Ahora, esperamos que ya hayas creado un proyecto en Django. De lo contrario, consulte ¿Cómo crear un proyecto básico usando MVT en Django? Como estamos usando firebase como base de datos, necesitamos instalar pyrebase . Para esto escriba el siguiente comando en la terminal:

$pip install pyrebase4

Cree un archivo views.py en su proyecto directamente. La estructura debería ser así.

Paso 13: Vaya al archivo urls.py y cree una ruta para moverse a la página web para cargar la imagen.

Python

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    
    path('check/',views.check,name="check"),
    
]

Paso 14: Luego muévase al archivo views.py y escriba la siguiente función para representar en la página html. 

Python

from django.shortcuts import render
import pyrebase
 
def check(request):
    return render(request,"check.html")

 
Paso 15: Luego nos moveremos a la página check.html y escribiremos el siguiente código para cargar la imagen en firebase. Los comentarios están escritos dentro para entenderlo mejor.

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Work</title>
    <style>
     body{
            background-image: url(https://images.unsplash.com/photo-1493723843671-1d655e66ac1c?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80);
        }
        div{
        position:absolute;
        right:10px;
        top:5px;
        }
        input{
            margin-top:20px;
            height: 30px;
            width: 150px;
            padding: 12px 20px;
            border-radius: 5px;
            color: black;
        }
        input[type="submit"]{
            background-color: rgba(7, 179, 185, 0.753);
            color: rgb(255, 255, 255);
            border: none;
            border-radius: 5px;
        }
        button{
            background-color: rgba(7, 179, 185, 0.753);
            color: white;
            width: 150px;
            height: 30px;
            border: none;
            border-radius: 5px;
            opacity: 0.3;
        }
    </style>
</head>
<body>
<div>
<button type="button" onclick="location.href='{% url 'log' %}' ">Logout</button>
    </div>
<h2>Add Image</h2>
<form action="/postcreate/" method="post">
    {% csrf_token %}
    <br>
    Title:
    <input type="text" name="work" required><br><br>
    Type Something:
    <textarea rows="5" cols="40" name="progress" required></textarea>
    <br><br>
    Document Upload:
    <input type="file" name="files[]" id="files">
    <input type="hidden" name="url" id="url">
    <button type="button" onclick="uploadimage()">Upload</button><br><br>
    <input type="submit" value="Submit"><br><br>
</form>
</body>
<script src="https://www.gstatic.com/firebasejs/3.7.4/firebase.js"></script>
<script>
    var firebaseConfig = {
    apiKey: "",
    authDomain: "",
    databaseURL:  "",
    storageBucket:  "",
  };
  firebase.initializeApp(firebaseConfig);
  function uploadimage(){
  var storage = firebase.storage();
  var file=document.getElementById("files").files[0];
  var storageref=storage.ref();
  var thisref=storageref.child(file.name).put(file);
  thisref.on('state_changed',function(snapshot) {
  console.log('Done');
 
  }, function(error) {
  console.log('Error',error);
 
}, function() {
  // Uploaded completed successfully, now we can get the download URL
  thisref.snapshot.ref.getDownloadURL().then(function(downloadURL) {
    console.log('File available at', downloadURL);
    document.getElementById("url").value=downloadURL;
    alert('uploaded successfully');
  });
});
}
</script>
</html>

Ahora muévase al directorio de su proyecto y ejecute nuestro proyecto usando el comando dado: 

python manage.py runserver

Producción:

Publicación traducida automáticamente

Artículo escrito por annianni y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *