目录
前置知识 – Django 简介
在许多 Web 应用程序中,上传和管理图像文件是一项非常普遍的功能,例如用户头像、产品图片或照片画廊。在 Django 中,我们可以利用模型中的 ImageField 轻松地处理图片上传。
在本文中,我们将带领大家构建一个名为 imageupload 的简单项目,以及一个名为 imageapp 的应用,在这个应用中,用户可以上传酒店图片。
1. 配置 settings.py
添加以下设置以处理媒体文件:
Python
CODEBLOCK_bd1dda6e
- MEDIA_ROOT 定义了用于存储上传文件的服务器端文件路径。
- MEDIA_URL 提供了浏览器访问这些文件的 URL。
2. 配置 urls.py 以提供媒体服务
将以下代码添加到项目的 urls.py 中:
Python
CODEBLOCK_99662df1
这确保了在开发过程中可以正常访问媒体文件。
3. 创建模型
在 image_app 下的 models.py 中创建一个 Hotel 模型:
Python
CODEBLOCK_07c33730
- ImageField 用于图片上传。
- upload_to=‘images/‘ 告诉 Django 将上传的图片存储在 media/images/ 文件夹中。
4. 创建模型表单
在你的应用中创建一个 forms.py 文件并定义表单:
Python
CODEBLOCK_03257e11
Django 的 ModelForm 会根据模型自动生成表单字段。
5. 创建 HTML 模板
在 templates 目录下创建一个名为 hotelimageform.html 的模板:
html
CODEBLOCK_e387fcad
解释:
- enctype="multipart/form-data" 是文件上传所必需的。
- {% csrf_token %} 用于防止 CSRF 攻击的安全防护。
- {{ form.as_p }} 将每个表单字段渲染在
标签中。
6. 创建视图
在 views.py 中,编写视图来处理表单提交:
Python
CODEBLOCK_d7d0bf0f
7. 添加 URL 模式
更新 urls.py 以包含图片上传和成功页面的路径:
Python
CODEBLOCK_04953f09
8. 运行迁移并测试
运行以下命令:
> python manage.py makemigrations
>
> python manage.py migrate
>
> python manage.py runserver
在浏览器中访问开发服务器 URL – http://localhost:8000/image_upload/。上传一张图片,你将被重定向到成功页面。
输出:
!django03/image_upload 端点快照
上传图片后将显示成功信息。
!django04成功上传的快照
现在,项目目录中将创建 media 目录,并在其中创建 images 目录,图片将存储在该目录下。这是最终结果。
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250514165615434360/djangofs.png">djangofs创建 media 目录的快照
显示上传的图片
我们可以编写一个视图来访问上传的图片,为了简单起见,让我们