Recuperar archivo PDF en Django desde 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 y utiliza NoSQL para el almacenamiento de datos.

Django , por otro lado,

recuperar,focusfirebaseSi es nuevo en firebase, consulte esto .

Aquí, vamos a aprender cómo podemos recuperar PDF usando Django en Firebase

Creando un proyecto en Django:

Use el siguiente comando para crear un proyecto Django:

$ django-admin startproject pdffinder

Verifiquemos que su proyecto Django funcione. Cambie al directorio del proyecto 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 14, 2021 - 15:50:53
Django version 3.2, using settings 'pdffinder.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

Implementación:

Siga los pasos a continuación para recuperar un archivo PDF en Django desde firebase:

Paso 1: muévase al directorio del proyecto pdffinder .

Paso 2: Vaya al archivo urls.py y cree una ruta para moverse a la página web para buscar datos.

Python

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

Paso 3 : 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
from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.decorators import login_required
import pyrebase
 
config={
    
    "databaseURL": "YOUR DATABASE URL",
    "projectId": "YOUR PROJECT ID",
     
}
 
#firebase configuration & authentication
firebase=pyrebase.initialize_app(config)
authe = firebase.auth()
database=firebase.database()
 
def search(request):
    return render(request, "search.html")

Paso 4: Luego nos moveremos a la página search.html y escribiremos el siguiente código para buscar datos en firebase. Los comentarios están escritos dentro para entenderlo mejor.

HTML

{% load static %}
<html lang="en">
   <head>
      <title>Search Page</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
      <link rel='stylesheet' href="{% static '/css/Search.css' %}">
      <link rel="stylesheet" type="text/css" href="{%static '/css/footer.css' %}">
   </head>
   <body>
      <div class="container">
         <div class="inner">
            <form method="post" action="/searchusers/">
               {% csrf_token %}
               
               // Type the name of pdf you want to retrieve
               <input type="text" placeholder="Enter Title..." aria-label="Search.." name="search"
                  id="search">
               
                // We will be selecting category of search
                // pdf as we want to retrieve odf
               <select name="category" id="category" name="">
                  <option value="">Select Category</option>
                  <option value="Question-papers">Search Pdf</option>
               </select>
               <input type="submit" value="Find">
            </form>
         </div>
      </div>
   </body>
</html>

Paso 5: Vaya al archivo urls.py y cree una ruta para pasar a la función de notas de búsqueda en views.py para buscar datos.

Python

from django.contrib import admin
from django.urls import path
from . import views
 
urlpatterns = [
      path('searchpdf/', views.searchnotes),
]

Paso 6: Luego muévase al archivo views.py y escriba la siguiente función para buscar el PDF con el nombre dado. 

Python

from django.shortcuts import render
from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.decorators import login_required
import pyrebase
 
config = {
    "databaseURL": "********************",
    "projectId": "********************",
}
firebase = pyrebase.initialize_app(config)
authe = firebase.auth()
database = firebase.database()
 
# function to request a query
# to the firebase database
def searchpdf(request):
    value = request.POST.get("search")
    if value == "":
        return render(request, "search.html")
    title = request.POST["category"]
    if title == "":
        return render(request, "search.html")
    if value is None or title is None:
        print(value, "Value", title)
        return render(request, "search.html")
    else:
        print(value)
        if title == "Question-papers":
 
            # search
            # for content inside the node Question-papers in firebase
            data = database.child("Question-papers").shallow().get().val()
            id = []
 
            # if found then append the value of i in id
            for i in data:
                id.append(i)
            for i in id:
                val = (
                    database.child("Question-papers")
                    .child(i)
                    .child("filename")
                    .get()
                    .val()
                )
                 
                # if id is equal to what we are
                # looking for the get the link or
                # return to serach page
                if val == value:
                    requid = i
                    fileurl = (
                        database.child("Question-papers")
                        .child(requid)
                        .child("fileurl")
                        .get()
                        .val()
                    )
                    return render(request, "searchNotes.html",
                                  {"fileurl": fileurl})
                else:
                    return render(request, "search.html")

Paso 7: Luego nos moveremos a la página searchnotes.html y mostraremos el PDF como obtuvimos el enlace de PDF de firebase.

Python

{% load static %}
 
<html lang="en">
<head>
  <title>Questions & Notes</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="Search.css">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
        <link rel='stylesheet' href="{% static '/css/Search.css' %}">
 
</head>
<body>
<div class="tm-container">
      <div class="tm-main-content text-center">
<embed
    src={{fileurl}}
    type="application/pdf"
    frameBorder="0"
    scrolling="auto"
    height="100%"
    width="100%"
></embed>
      </div>
 
  <br>
  <script>
    $(document).ready(function(){
      $('.dropdown-submenu a.test').on("click", function(e){
        $(this).next('ul').toggle();
        e.stopPropagation();
        e.preventDefault();
      });
    });
    </script>
    
</div>
</body>
</html>

Código de salida:

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 *