📜  使用 Django 和 Firebase 上传图像(1)

📅  最后修改于: 2023-12-03 15:06:46.118000             🧑  作者: Mango

使用 Django 和 Firebase 上传图像

Firebase 是 Google 提供的后端服务,提供了实时数据库、身份验证、存储等功能,使开发者可以轻松构建高质量的 Web 应用程序。Django 是 Python 中最受欢迎的 Web 框架之一,它的强大之处在于其提供了许多内置功能,例如模板系统、ORM 等,使开发者可以更加高效地构建 Web 应用程序。本文将介绍如何使用 Django 和 Firebase 来上传图像。

准备工作

Firebase 帐户和应用程序

要开始使用 Firebase,您需要首先创建一个 Firebase 帐户并创建一个 Firebase 应用程序。在 Firebase 控制台中,单击“添加项目”按钮并填写表单。完成后,单击“创建项目”按钮。接下来,您将被重定向到“控制台”,其中包含 Firebase 应用程序的详细信息。

Django 项目

要使用 Django,您需要本地安装 Python,并且最好使用 Python 虚拟环境。接下来,您需要使用 pip 安装 Django,可以使用以下命令:

pip install Django

然后,您需要创建一个 Django 项目,可以使用以下命令:

django-admin startproject project_name

其中,“project_name”是您的项目名称。

设置 Firebase 存储

安装 Firebase Admin SDK

要使用 Firebase 存储,您需要安装 Firebase Admin SDK。您可以使用 pip 安装 Firebase-admin:

pip install firebase-admin

获取 Firebase 配置

在 Firebase 控制台中,单击“设置项目”按钮。然后,单击“服务帐户”标签。接下来,单击“生成新私钥”按钮以生成“json”格式的私钥文件。

将私钥文件保存在您的 Django 项目根目录中,并将其命名为“firebase.json”。

实例化 Firebase 存储

在您的 Django 项目的“settings.py”文件中添加以下行:

import firebase_admin
from firebase_admin import credentials

cred = credentials.Certificate('firebase.json')
firebase_admin.initialize_app(cred, {
    'storageBucket': 'project-id.appspot.com'
})

其中,“project-id.appspot.com”是您的 Firebase 存储桶名称。

创建 Django 视图

安装 Pillow

Django 需要 Pillow 库来处理图像。您可以使用以下命令安装它:

pip install Pillow

创建 Django 视图

在您的 Django 项目中创建一个新的视图,并将以下代码添加到视图中:

from django.shortcuts import render
from firebase_admin import storage
from django.core.files.base import ContentFile
from PIL import Image
import urllib.request

def upload_image(request):
    if request.method == 'POST' and request.FILES['image']:
        # 获取图像
        image = request.FILES['image']
        # 打开图像并调整大小
        img = Image.open(image)
        img = img.resize((100, 100))
        # 将图像保存到内存中
        buffer = BytesIO()
        img.save(buffer, 'jpeg')
        buffer.seek(0)
        # 上传图像到 Firebase 存储
        blob = storage.bucket().blob(image.name)
        blob.upload_from_file(ContentFile(buffer.getvalue()))
        # 获取公共访问 URL
        url = blob.public_url
        # 返回页面
        return render(request, 'success.html', {'url': url})

    return render(request, 'upload.html')

在这个例子中,我们从请求中获取图像并打开它。然后,我们将图像调整为 100x100 大小,并将其保存到内存中。接下来,我们将图像上传到 Firebase 存储并获取公共访问 URL。

要使用此视图,您需要首先创建两个模板:“upload.html”和“success.html”。只需使用基本的 HTML 代码,分别包括以下代码即可:

<!-- upload.html -->
<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="image">
    <input type="submit" value="Upload">
</form>
<!-- success.html -->
{% if url %}
    <img src="{{ url }}"/>
{% endif %}
创建 Django URL

最后,您需要创建一个 Django URL,以便在浏览器中访问此视图。在您的 Django 项目的“urls.py”文件中添加以下行:

from django.urls import path
from .views import upload_image

urlpatterns = [
    path('', upload_image, name='upload_image'),
]

现在,您可以在浏览器中输入 http://localhost:8000/ 访问该页面,并上传图像。上传后,您将被重定向到“success.html”页面,其中包含您上传图像的公共访问 URL。

结论

使用 Django 和 Firebase 开发 Web 应用程序变得更加容易,特别是在上传图像方面。在本文中,我们介绍了如何使用 Django 和 Firebase 上传图像。要深入了解 Django 和 Firebase,请查阅官方文档。