无法设置默认图像django
Can't set default image django
我正在为用户创建个人资料。我完成了所有媒体和静态设置。但是,当我在图像字段中设置默认值和 upload_to 时,出现找不到图像的错误。我已经尝试了所有不同的路径图像,但它也不起作用。有人可以帮我检查路径吗?非常感谢!
设置中的路径:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/images')
MEDIA_URL = '/media/'
url 项目:
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)
型号:
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:
class UserDetailForm(forms.ModelForm):
class Meta:
model = UserInfoCnc
fields = ('user', 'about', 'face_site', 'ins_site', 'profile_pic')
views.py:
class UserDetailView(DetailView):
form_class = forms.UserDetailForm
model = models.UserInfoCnc
template_name = 'userinfocnc_detail.html'
显示 html 中的图像:
<img class='img-thumbnail' src="{{ userinfocnc.profile_pic.url }}" alt="Error load image">
项目中的文件媒体和静态:
我认为如果没有图像应该设置为 null=True,这样你就可以验证是否有带有 2 个选项的图像:
选项 1
<img src=“{{ object.image.url|default:'/media/default_avatar.jpg' }}">
选项 2
{% if object.image %}
<img src="{{ object.image.url }}">
{% else %}
<img src="{% static 'default_avatar.jpg' %}">
{% endif %}
所以,图像文件是为用户上传的文件提供服务,默认图像保存在媒体文件夹中。您需要做的就是将 STATIC 更改为 MEDIA。
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
并且如果您使用 UpdateView 更改用户的图像。您必须在 <form action="" method="post" enctype="multipart/form-data" >
中添加 enctype="multipart/form-data"
,UpdateView 将处理其余部分。
我正在为用户创建个人资料。我完成了所有媒体和静态设置。但是,当我在图像字段中设置默认值和 upload_to 时,出现找不到图像的错误。我已经尝试了所有不同的路径图像,但它也不起作用。有人可以帮我检查路径吗?非常感谢!
设置中的路径:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/images')
MEDIA_URL = '/media/'
url 项目:
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)
型号:
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:
class UserDetailForm(forms.ModelForm):
class Meta:
model = UserInfoCnc
fields = ('user', 'about', 'face_site', 'ins_site', 'profile_pic')
views.py:
class UserDetailView(DetailView):
form_class = forms.UserDetailForm
model = models.UserInfoCnc
template_name = 'userinfocnc_detail.html'
显示 html 中的图像:
<img class='img-thumbnail' src="{{ userinfocnc.profile_pic.url }}" alt="Error load image">
项目中的文件媒体和静态:
我认为如果没有图像应该设置为 null=True,这样你就可以验证是否有带有 2 个选项的图像:
选项 1
<img src=“{{ object.image.url|default:'/media/default_avatar.jpg' }}">
选项 2
{% if object.image %}
<img src="{{ object.image.url }}">
{% else %}
<img src="{% static 'default_avatar.jpg' %}">
{% endif %}
所以,图像文件是为用户上传的文件提供服务,默认图像保存在媒体文件夹中。您需要做的就是将 STATIC 更改为 MEDIA。
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
并且如果您使用 UpdateView 更改用户的图像。您必须在 <form action="" method="post" enctype="multipart/form-data" >
中添加 enctype="multipart/form-data"
,UpdateView 将处理其余部分。