In this part of Python Django with Google Firebase series we’ll cover Firebase Database i.e real-time database as Django backend using Pyrebase library. For showcasing the implementation we’ll use a HTML Form created using Django templates to Push data to Firebase Database, later i will show you how we retrieve data from Firebase to Django template.

Check out this video, code below follows the video to help:

If you like videos like this consider donating $1, or simply turn off AdBlocker. Either helps me to continue making tutorials.

Transcript / Cheat Sheet :

Templates:

First we need to edit our ‘welcome.html’ on which we’ll add button for CREATE REPORT & CHECK REPORT .
Welcome.html



























<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
position : absolute;
right : 10px;
top : 5px
}
</style>
</head>
<body>


<div>

<button type="button" onclick="location.href='{% url 'log' %}'">Logout</button>
</div>
Welcome {{e}}
<br><br>
<button type="button" onclick="location.href='{% url 'create' %}'">Create Report</button>
<button type="button">Check Report</button>
</body>
</html>

Create.html
Now create a simple HTML Form for pushing data to Firebase database, we’ll be redirected to this form by clicking on previously created CREATE REPORT button


































<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign</title>
<style>
div{
position : absolute;
right : 10px;
top : 5px
}
</style>
</head>
<body>
<div>

<button type="button" onclick="location.href='{% url 'log' %}'">Logout</button>
</div>
<H2>Create Daily Progress Report</H2>
<form action="/post_create/" method="post">
{% csrf_token %}
Work Assigned :
<input type="text" name="work" required><br><br>
Progress:
<textarea rows="5" cols="40" name="progress" required></textarea>
<br><br>
<input type="submit" value="Submit">

</form>
</body>
</html>

Source code for SignIn.html & SignUp.html 
Views.py



























































































import pyrebase
from django.shortcuts import render
from django.contrib import auth
config = {

'apiKey': "AIzaSyB0Il0NLQPxxDyMgoE0fOMd4pYUkbkZVvI",
'authDomain': "cpanel-5e873.firebaseapp.com",
'databaseURL': "https://cpanel-5e873.firebaseio.com",
'projectId': "cpanel-5e873",
'storageBucket': "cpanel-5e873.appspot.com",
'messagingSenderId': "579985583952"
}

firebase = pyrebase.initialize_app(config)

authe = firebase.auth()
database=firebase.database()
def signIn(request):

return render(request, "signIn.html")

def postsign(request):
email=request.POST.get('email')
passw = request.POST.get("pass")
try:
user = authe.sign_in_with_email_and_password(email,passw)
except:
message="invalid credentials"
return render(request,"signIn.html",{"messg":message})
print(user['idToken'])
session_id=user['idToken']
request.session['uid']=str(session_id)
return render(request, "welcome.html",{"e":email})
def logout(request):
auth.logout(request)
return render(request,'signIn.html')


def signUp(request):

return render(request,"signup.html")
def postsignup(request):

name=request.POST.get('name')
email=request.POST.get('email')
passw=request.POST.get('pass')
try:
user=authe.create_user_with_email_and_password(email,passw)
except:
message="Unable to create account try again"
return render(request,"signup.html",{"messg":message})
uid = user['localId']

data={"name":name,"status":"1"}

database.child("users").child(uid).child("details").set(data)
return render(request,"signIn.html")

def create(request):

return render(request,'create.html')


def post_create(request):

import time
from datetime import datetime, timezone
import pytz

tz= pytz.timezone('Asia/Kolkata')
time_now= datetime.now(timezone.utc).astimezone(tz)
millis = int(time.mktime(time_now.timetuple()))
print("mili"+str(millis))
work = request.POST.get('work')
progress =request.POST.get('progress')

idtoken= request.session['uid']
a = authe.get_account_info(idtoken)
a = a['users']
a = a[0]
a = a['localId']
print("info"+str(a))
data = {
"work":work,
'progress':progress
}
database.child('users').child(a).child('reports').child(millis).set(data)
name = database.child('users').child(a).child('details').child('name').get().val()
return render(request,'welcome.html', {'e':name})


Urls.py
















from django.contrib import admin
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$',views.signIn),
url(r'^postsign/',views.postsign),
url(r'^logout/',views.logout,name="log"),
url(r'^signup/',views.signUp,name='signup'),
url(r'^postsignup/',views.postsignup,name='postsignup'),
url(r'^create/',views.create,name='create'),
url(r'^post_create/',views.post_create,name='post_create')
]

 That’s end up Python Django with Firebase Database Push Data for more functionality refer Pyrebase library page. In next tutorial we will cover Python django with Firebase database Retrieve Data to Django Template  if you guys facing some issue comment out 🙂  

Whole Project Source Code here   

Categorized in: