突然间有人可以指导我。 我制作了一个应用程序,人们有一个正常的个人资料,有一系列可以修改个人资料照片的字段,在本地它工作得很好,但是,当将其部署在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')
最佳答案
请按照以下步骤操作:
将 Cloudinary Addon 添加到您的 Heroku 应用。
点击 cloudinary 并安装它。
然后点击 Cloudinary 插件。
从此仪表板中您将能够看到您的凭据 连接。
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/