首先安装Pillow
pip install Pillow
然后呢在settings中配置
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\", "/")
MEDIA_URL = '/media/'
在全局URL中配置
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
///
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
之后就是添加字段啦,毕竟得有字段对应对吧。前往相应的app下的models
picture =models.ImageField(upload_to='images/', blank=True, verbose_name=_('个人头像'))
attachment = models.FileField(upload_to='file/', blank=True, verbose_name=_('简历附件'))
编辑完自然就要同步数据库了
- python manage.py makemigrations
- python manage.py migrate
接着前往admin层配置将要显示的字段,比如picture,或者自定义字段(头像)
from settings.base import MEDIA_URL
class ResumeAdmin(admin.ModelAdmin):
list_display = (
'admin_sample', 'username', 'applicant', 'city', 'apply_position', 'bachelor_school', 'master_school', 'major', 'created_data')
fieldsets = (
(None, {'fields': (
'applicant', ('picture', 'username', 'city', 'phone','attachment',),
('email', 'apply_position', 'born_address', 'gender',),
('bachelor_school', 'master_school',), ('major', 'degree'), ('created_data', 'modified_date'),
('candidate_introduction', 'work_experience', 'project_experience',)
)
}),
)
@admin.display(description='头像', )
def admin_sample(self, obj):
if not obj.picture:
return ""
else:
return mark_safe('<img src="%s%s" height="50" width="50" />'%(MEDIA_URL, obj.picture,))
还有一点就是要在html文件中的form表单中添加
enctype=”multipart/form-data”
<form method="post" class="form" enctype="multipart/form-data" style="width:300px; margin-left:5px">
{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">提交</button>
{% endbuttons %}
</form>
在html中添加图片的话则是
<img src="{{MEDIA_URL}}{{object.picture}}" height="50" width="50" />
注意,MEDIA_URL要能够成功引用,需要再settings中添加配置
首先在setting.py中 TEMPLATES 下面的 ‘context_processors’: 里面添加 ‘django.template.context_processors.media’,
进阶!存在数据库中毕竟不大妥,应该上传在oss云端上,具体的到时候在说咯~