python - 将图像上传到 firebase 并在 sqlite DJango 中保存 url

标签 python django firebase

突然间有人可以指导我。 我制作了一个应用程序,人们有一个正常的个人资料,有一系列可以修改个人资料照片的字段,在本地它工作得很好,但是,当将其部署在heroku(免费帐户)中时,这是不可能的,因为heroku在其免费版本中确实不处理动态文件,或者至少这是我的理解,所以我想将图像保存在 firebase 中,仅将 url 保存在数据库中。有人知道我该怎么做吗? 非常感谢您的解答

这是当前的代码

views.py

def edit_profile(request):
    if request.method == 'POST':
        form = UEditF(request.POST, instance=request.user)
        extended_profile_form = ProfileForm(request.POST, request.FILES,
                                            instance=request.user.profile)
        if form.is_valid() and extended_profile_form.is_valid():
            form.save()
            extended_profile_form.save()
            return redirect('/polls/perfil')
    else:
        form = UEditF(instance=request.user)
        extended_profile_form = ProfileForm(instance=request.user.profile)

    context = {
        'form': form,
        'extended_profile_form':extended_profile_form
    }
    form.fields['password'].help_text = 'Para cambiar la contraseña has clic en el menú superior derecho "Cambiar contraseña"'
    return render(request, 'registration/edit_profile.html', context)

forms.py

class UEditF(UserChangeForm):

    class Meta:
        model = User
        fields = ['first_name', 'last_name']

class ProfileForm(forms.ModelForm):

    birth_date = forms.DateField(widget=DatePickerInput(format='%d/%m/%Y'), label='Fecha de nacimiento')
    photo = forms.ImageField(label="Foto de perfil")

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    birth_date = models.DateField('Fecha de nacimiento', default=date.today)
    photo = models.ImageField('Foto de perfil', upload_to='media/',
                              max_length=200, default='default.png')

最佳答案

请按照以下步骤操作:

  1. 将 Cloudinary Addon 添加到您的 Heroku 应用。

  2. 点击 cloudinary 并安装它。

  3. 然后点击 Cloudinary 插件。

  4. 从此仪表板中您将能够看到您的凭据 连接。

5) 然后转到您的项目:

IN your terminal type these commands:

pip install django-cloudinary-storage
    
pip install cloudinary
    
pip install Pillow

6) 在你的settings.py中:

INSTALLED_APPS = [
       'django.contrib.staticfiles',   
       'cloudinary_storage',
       'cloudinary',
        ]

CLOUDINARY_STORAGE = {
             'CLOUD_NAME': 'your_cloud_name',
             'API_KEY': 'your_api_key',
             'API_SECRET': 'your_api_secret'
            }

MEDIA_URL = '/media/'  # or any prefix you choose
 
DEFAULT_FILE_STORAGE='cloudinary_storage.storage.MediaCloudinaryStorage'

7) 在 models.py 中:

class TestModel(models.Model):
             name = models.CharField(max_length=100)
             image = models.ImageField(upload_to='images/', 
             blank=True)

8) 现在,为了将此图像放入您的模板中,您只需输入:

 <img src="{{ test_model_instance.image.url }}" alt="{{ 
    test_model_instance.image.name }}">

9) 要求.txt:

...
cloudinary==1.17.0
django-cloudinary-storage==0.2.3

关于python - 将图像上传到 firebase 并在 sqlite DJango 中保存 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63964806/

相关文章:

python - 扭曲中的 createResolver() 不起作用

python - 对于可能返回 None 的方法,哪种返回方式是 "better"?

python - Django - 在一个 View 中有两种不同形式并调用函数的问题

python - Django+gunicorn+nginx telegram webhook ssl 麻烦

android - Android 上 Firebase 磁盘持久性中的错误?只能推送30条新记录

android - 如何使用 Firebase 通知通知用户值已更改 Android?

python - 在 Python 中解包字典的性能影响

python - 在intellij中设置pythonpath

python - 合并字典项值的重复列表

java - 从 Google App Engine 调用 Firebase 数据库