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: