首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法设置默认图像django

无法设置默认图像django
EN

Stack Overflow用户
提问于 2022-05-07 03:05:04
回答 2查看 146关注 0票数 1

我为用户创建了一个配置文件。我设置了所有的媒体和静态。但是,当我在图像字段中设置默认值和upload_to时,它会错误地找不到图像。我尝试了所有不同的路径图像,但它也不起作用。有人能帮我检查一下路吗。非常感谢!

设置中的路径:

代码语言:javascript
运行
复制
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/images')
MEDIA_URL = '/media/'

url项目:

代码语言:javascript
运行
复制
   urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.IndexPage.as_view(),name='index'),
    path('welcome/',views.WelcomePage.as_view(),name='welcome'),
    path('bye/',views.ByePage.as_view(),name='bye'),
    path('about/',views.AboutPage.as_view(),name='about'),
    path('profile/', include('accounts.urls'))
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

模型:

代码语言:javascript
运行
复制
    class UserInfoCnc(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        profile_pic = models.ImageField(upload_to = 'profile_pics', default='profile_pics/xinlacho.JPG' ,blank=True

forms.py:

代码语言:javascript
运行
复制
class UserDetailForm(forms.ModelForm):
    class Meta:
        model = UserInfoCnc
        fields = ('user', 'about', 'face_site', 'ins_site', 'profile_pic')

views.py:

代码语言:javascript
运行
复制
class UserDetailView(DetailView):
    form_class = forms.UserDetailForm
    model = models.UserInfoCnc
    template_name = 'userinfocnc_detail.html'

用html显示图像:

代码语言:javascript
运行
复制
<img class='img-thumbnail' src="{{ userinfocnc.profile_pic.url }}" alt="Error load image">

项目中的文件媒体和静态:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-07 13:10:47

因此,图像文件是为用户上传的文件服务的,默认图像保存在媒体文件夹中。您所需要做的就是将静态更改为媒体。

代码语言:javascript
运行
复制
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

如果您使用UpdateView来更改用户的图像。您必须在enctype="multipart/form-data"中添加<form action="" method="post" enctype="multipart/form-data" >,其余的将由UpdateView处理。

票数 0
EN

Stack Overflow用户

发布于 2022-05-07 03:46:06

我认为,如果没有图像,则应该将其设置为null=True,这样您就可以验证是否有带有两个选项的图像:

备选案文1

代码语言:javascript
运行
复制
<img src=“{{ object.image.url|default:'/media/default_avatar.jpg' }}">

选项2

代码语言:javascript
运行
复制
{% if object.image %}
<img src="{{ object.image.url }}">
{% else %}
<img src="{% static 'default_avatar.jpg' %}">
{% endif %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72149165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档