我正在尝试使用我的Django Web应用程序实现Firebase实时数据库。在使用Firebase正确设置配置后,我对数据如何从我的Django网站写入我的Firebase数据库而不是使用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@usedforauthentication.com", "FstrongPasswordHere")
db = firebase.database()
答案 0 :(得分:9)
查看文档的database部分。它详细说明了如何与数据库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()})
可以看到检索数据的文档here
还说你想要一个保存(注册)用户的视图,你可以这样:
#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
方法here
PS。我从未使用pyrebase库,因此我只根据其文档中指定的内容编写。另外,我只是写下这些django片段,如果有任何语法错误或拼写错误,请原谅我:)
希望这会有所帮助:)
答案 1 :(得分:2)
考虑在这里查看fcm-django库https://github.com/xtrinch/fcm-django
答案 2 :(得分:0)
Pyrebase是Firebase的python包装。我不建议使用Pyrebase,因为它不支持Firestore和FCM。当Django中的所有操作都在服务器端完成后,为什么不在Django服务器上使用 Firebase Admin SDK 。您也可以使用它来管理用户。我的意思是,有很好的文档将Firebase添加到我们的服务器。此外,他们还有用于服务器的Python,NodeJS等文档。我知道它倾向于使用API。但由于Django是服务器应用程序,因此我认为使用Django是正确的方法。看看这个link
答案 3 :(得分:0)
关于Firebase,我还需要了解其他内容吗?
不,关于Django,您需要了解一些内容-它旨在使用关系数据库引擎作为其主要数据存储库。 Firebase与关系无关。
很抱歉成为坏消息的承担者。
关于这个问题的许多答案都没有提到这一点,而是建议使用代码或库来从Python访问Firebase 。当然可以。但这不能使其用作Django的主要数据存储。 Django的ORM功能和contrib应用程序都假定一个关系数据库。
要使其正常工作,您需要遵循django-nonrel的支持Firebase的内容。据我所知,这是不存在的。
答案 4 :(得分:0)
我的解决方案,用于从html获取多个文件并将该文件上传到Web Django的Firebase存储中
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)