Как реализовать FirebaseDB с помощью веб-приложения Django

Я пытаюсь реализовать базу данных Firebase Realtime с помощью своего веб-приложения Django. После правильной настройки конфигурации с Firebase я смутился о том, как данные будут записываться в мою базу данных Firebase с моего сайта Django, вместо использования Sqlite или Postgres.

В settings.py мне нужно установить мой движок в Firebase? Здесь я совершенно смущен. Я не хочу использовать обычные ORM, такие как Sqlite, Postgres и т.д. Я хочу, чтобы мое приложение использовало Firebase.

Есть ли что-то еще, что мне нужно знать о Firebase?

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

файл pyrebase_settings

import pyrebase

config = {
    "apiKey": "my_api_key_is_here",
    "authDomain": "my_auth_domain_is_here",
    "databaseURL": "my_firebase_database_url_is_here",
    "projectId": "my_firebase_project_id_is_here",
    "storageBucket": "my_firebase_storageBucket_is_here",
    "serviceAccount": "my_serviceAccount.json_file_path_is_here",
    "messagingSenderId": "messagingSenderId_is_here"
}

# initialize app with config
firebase = pyrebase.initialize_app(config)

# authenticate a user
auth = firebase.auth()
user = auth.sign_in_with_email_and_password("[email protected]", "FstrongPasswordHere")


db = firebase.database()

Ответ 1

взгляните на раздел базы данных документа. Он подробно описывает, как вы будете взаимодействовать с API базы данных. Обычно вы используете их в своих представлениях, где вам нужно сохранить или извлечь что-то из базы данных.

Например, если вы хотите, чтобы представление получало пользователей, у вас может быть что-то вроде этого:

#views.py
from pyrebase_settings import db, auth
from django.shortcuts import render

def get_users(request):
    users = db.child("users").get()
    return render(request, 'users.html', {'users': users.val()})

Документацию для получения данных можно посмотреть здесь

также скажем, что вы хотите, чтобы представление сохраняло (регистрировало) пользователей, у вас может быть что-то вроде этого:

#views.py
from pyrebase_settings import db, auth

def signup(request):
   form = SignupForm(request.POST)
   if form.is_valid():
       email = form.cleaned_data('email')
       password = form.cleaned_data('password')
       auth.create_user_with_email_and_password(email, password)
   # the rest of your code goes here

метод create_user_with_email_and_password здесь

PS. Я никогда не использовал библиотеку pyrebase, поэтому я пишу только на основе того, что указано в ее документации. Кроме того, я пишу только эти фрагменты django на моей голове, так что простите, если есть какие-либо синтаксические ошибки или опечатки :)

Надеюсь это поможет :)

Ответ 3

Pyrebase - это оболочка для Firebase для python. Я не рекомендую использовать Pyrebase, потому что он отстает от поддержки Firestore и FCM. Когда все в Django сделано на сервере, почему бы не использовать Firebase Admin SDK на сервере Django. Вы также можете управлять пользователями с ним. Я имею в виду, что есть хорошая документация для добавления Firebase на наш сервер. Кроме того, у них есть документы на Python, NodeJS и т.д. Для сервера. Я знаю, что это похоже на API. Но я чувствую, что это правильный путь в Django, поскольку Django - это серверное приложение. Проверьте эту ссылку

Ответ 4

  Есть ли что-то еще, что мне нужно понять о Firebase?

Нет, вам нужно кое-что понять о Django - он предназначен для использования механизма реляционных баз данных в качестве основного хранилища данных. Firebase не является реляционным.

Извините, что принесу плохие новости.

Многие ответы на этот вопрос упускают этот пункт, и предлагают код или библиотеки, которые позволяют вам получить доступ к Firebase из Python. Конечно, это возможно. Но это не делает его основным хранилищем данных для Django. Все функции Django ORM и приложения для добавления предполагают реляционную базу данных.

Чтобы это работало, вам нужно что-то вроде django-nonrel, которое поддерживает Firebase. Насколько я знаю, что не существует.

Ответ 5

Мое решение для получения нескольких файлов из HTML и загрузки этих файлов в хранилище Firebase в веб-Django

index.html

<div id="fine-uploader-manual-trigger">
<input class="custom-file" type="file" name="imgname" id="productImgUpload" accept=".xlsx,.xls,image/*,.doc,audio/*,.docx,video/*,.ppt,.pptx,.txt,.pdf" multiple>
</div> 

views.py

from firebase import Firebase

def storeimg(request):
  config = {
            "apiKey": "",
            "authDomain": "",
            "databaseURL": "",
            "storageBucket": ""
        }
  firebase = Firebase(config)
  storage = firebase.storage()
  finalimglist = []
  imglist = []
  for i in range(len(filepath)):
       storage.child("Product/"+cname+"/"+str(filepath[i])).put(filepath[i])
       imgurl = storage.child("Product/"+cname+"/"+str(filepath[i])).get_url(token='null')
       imglist.append(imgurl)

  finalimglist.append(imglist)