问题陈述:In shown image, default profile pic is visible but i need uploaded photo to be displayed here when i upload and saved in the database.I am using django framework.
我在这里尝试了什么?
在setting.html文件中,下面是尝试显示图像,简历,位置的HTML代码。问题可能是在第一个div图像标签。虽然默认的个人资料图片是可见的,但我上传的图片不在页面中显示,也不能保存在数据库中。
<form action="" method ="POST">
{% csrf_token %}
<div class="grid grid-cols-2 gap-3 lg:p-6 p-4">
<div class="col-span-2">
<label for="">Profile Image</label>
<img width = "100" height = "100" src="{{user_profile.profileimg.url}}"/>
<input type="file" name='image' value = "" placeholder="No file chosen" class="shadow-none bg-gray-100">
</div>
<div class="col-span-2">
<label for="about">Bio</label>
<textarea id="about" name="bio" rows="3" class="shadow-none bg-gray-100">{{user_profile.bio}}</textarea>
</div>
<div class="col-span-2">
<label for=""> Location</label>
<input type="text" name = "location" value = "{{user_profile.location}}" placeholder="" class="shadow-none bg-gray-100">
</div>
</div>
<div class="bg-gray-10 p-6 pt-0 flex justify-end space-x-3">
<button class="p-2 px-4 rounded bg-gray-50 text-red-500"> <a href="/"> Cancel</a> </button>
<button type="submit" class="button bg-blue-700"> Save </button>
</div>
</form>
在views.py文件中,下面的函数是用于显示图像、个人简历和位置的视图文件设置页面逻辑。如果图像没有上传,它将是默认的个人资料图片。如果图像不是“无”,则显示上传的图像。但我不知道我的代码中有什么错误。
@login_required(login_url='signin')
def settings(request):
user_profile = Profile.objects.get(user = request.user)
if request.method == "POST":
if request.FILES.get('image')== None:
image = user_profile.profileimg
bio = request.POST['bio']
location = request.POST['location']
else:
image = request.FILES.get('image')
bio = request.POST['bio']
location = request.POST['location']
user_profile.profileimg = image
user_profile.bio = bio
user_profile.location = location
user_profile.save()
return redirect("settings")
return render(request, 'setting.html', {'user_profile': user_profile})
我希望知道代码中的错误是什么。只有profileimg不能保存在数据库中。其他数据可以保存,如生物,位置。
下面是model.py文件。
from django.db import models
from django.contrib.auth import get_user_model
User = get_user_model()
# Create your models here.
class Profile(models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE)
id_user = models.IntegerField()
bio = models.TextField(blank=True)
profileimg = models.ImageField(upload_to = 'profile_images', default= 'blank-profile-picture.png')
location = models.CharField(max_length = 100, blank = True)
def __str__(self):
return self.user.username
下面是www.example.com文件中的介质文件夹settings.py。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core',
]
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
MEDIA_URL ='/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('core.urls')),
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
照片未显示。
4条答案
按热度按时间wn9m85ua1#
你试图以错误的方式获取图像。
相反,您可以使用
如果不起作用,请尝试删除媒体前的“/”。
如果问题仍然存在,请回复此邮件。
f4t66c6m2#
哦,天啊。我怎么会错过呢。
我朋友的问题在于视野。
在函数中添加以下内容:
在请求图像时,仅将图像放置在下面给出的列表中的变量中。
我希望这个问题可以解决。如果问题仍然存在,请回复。
vlju58qv3#
简单地你可以试试这个办法:
现在这个图像将显示
注意:如果您上传的图像保存在媒体文件夹中,那么上面的代码将工作。
根据您的模型字段profileimg,您应该在upload_to中添加正斜杠:
它一定像下面这样:
并确保您已将此添加到您的主URL中:
klh5stk14#
谢谢你的回答我找到解决办法了
setting.html文件中缺少此加密类型此加密类型工作正常,图像显示正确