Как реализовать 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 на моей голове, так что простите, если есть какие-либо синтаксические ошибки или опечатки :)
Надеюсь это поможет :)
Ответ 2
рассмотрим возможность просмотра библиотеки fcm-django здесь https://github.com/xtrinch/fcm-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)