django之图片上传(day-27) - 图1

    首先安装Pillow
    pip install Pillow
    然后呢在settings中配置

    1. MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\", "/")
    2. MEDIA_URL = '/media/'

    在全局URL中配置

    1. from django.conf.urls.static import static
    2. from django.conf import settings
    3. urlpatterns = [
    4. ///
    5. ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    之后就是添加字段啦,毕竟得有字段对应对吧。前往相应的app下的models

    1. picture =models.ImageField(upload_to='images/', blank=True, verbose_name=_('个人头像'))
    2. attachment = models.FileField(upload_to='file/', blank=True, verbose_name=_('简历附件'))

    编辑完自然就要同步数据库了

    • python manage.py makemigrations
    • python manage.py migrate

    接着前往admin层配置将要显示的字段,比如picture,或者自定义字段(头像)

    1. from settings.base import MEDIA_URL
    2. class ResumeAdmin(admin.ModelAdmin):
    3. list_display = (
    4. 'admin_sample', 'username', 'applicant', 'city', 'apply_position', 'bachelor_school', 'master_school', 'major', 'created_data')
    5. fieldsets = (
    6. (None, {'fields': (
    7. 'applicant', ('picture', 'username', 'city', 'phone','attachment',),
    8. ('email', 'apply_position', 'born_address', 'gender',),
    9. ('bachelor_school', 'master_school',), ('major', 'degree'), ('created_data', 'modified_date'),
    10. ('candidate_introduction', 'work_experience', 'project_experience',)
    11. )
    12. }),
    13. )
    14. @admin.display(description='头像', )
    15. def admin_sample(self, obj):
    16. if not obj.picture:
    17. return ""
    18. else:
    19. return mark_safe('<img src="%s%s" height="50" width="50" />'%(MEDIA_URL, obj.picture,))

    还有一点就是要在html文件中的form表单中添加
    enctype=”multipart/form-data”

    1. <form method="post" class="form" enctype="multipart/form-data" style="width:300px; margin-left:5px">
    2. {% csrf_token %}
    3. {% bootstrap_form form %}
    4. {% buttons %}
    5. <button type="submit" class="btn btn-primary">提交</button>
    6. {% endbuttons %}
    7. </form>

    在html中添加图片的话则是

    1. <img src="{{MEDIA_URL}}{{object.picture}}" height="50" width="50" />

    注意,MEDIA_URL要能够成功引用,需要再settings中添加配置
    首先在setting.py中 TEMPLATES 下面的 ‘context_processors’: 里面添加 ‘django.template.context_processors.media’,

    进阶!存在数据库中毕竟不大妥,应该上传在oss云端上,具体的到时候在说咯~