Django教程-如何使用 Django 上传图像
Django教程-如何使用 Django 上传图像
gh_1d7504e4dee1
回复:python,领取Python面试题。分享Python教程,Python架构师教程,Python爬虫,Python编程视频,Python脚本,Pycharm教程,Python微服务架构,Python分布式架构,Pycharm注册码。
图像上传是任何现代网络应用程序的主要功能之一。它允许用户将图像或图片上传到服务器上。幸运的是,Django 提供了处理图像的简单过程,特别是上传图像或图片。使用它,我们可以创建一个漂亮的 Web 应用程序,用户可以在其中上传带有标题的图像。
在本教程中,我们将讨论如何在 Django 应用程序中上传图像。在我们进一步讨论之前,请确保您具备 Django 的基本知识。
将图像上传到 Django
大多数Web应用程序都处理文件或图像,Django提供了两个模型字段允许用户上传图像和文件。这些字段是FileField和ImageField;**基本上 ImageField 是FileField**的专门版本,它使用 Pillow 来确认文件是图像。让我们看看以下创建模型的示例。
models.py
from
django.db
import
models
class
UploadImage
(models.Model)
:
caption = models.CharField(max_length=
200
)
image = models.ImageField(upload_to=
’images’
)
def
__str__
(self)
:
return
self.caption
资源分享
我们不需要手动创建媒体目录;当我们上传图像时它会自动创建。
首先,我们需要安装 Pillow 库,这有助于处理图像。我们可以使用以下 pip 命令安装它。
pip
install Pillow
settings.py
# Base url to serve media files
MEDIA_URL
=
’/media/’
# Path where media is stored
MEDIA_ROOT
= os.path.join(BASE_DIR,
’media/’
)
MEDIA_URL - 它将提供媒体文件。 MEDIA_ROOT - 它指定存储文件的根路径。
Urls.py
from
django.contrib
import
admin126459646
from
django.urls
import
path
from
django.urls.conf
import
include
from
django.conf
import
settings
from
django.conf.urls.static
import
static
urlpatterns = [
path(
’admin126459646/’
, admin126459646.site.urls),
path(
’’
, include((
’sampleapp.urls’
),
namespace
=
’sampleapp’
))
]
if
settings.DEBUG:
urlpatterns +=
static
(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
python
manage
.py
makemigations
python
manage
.py
migrate
forms.py
from
django.db
import
models
from
django.forms
import
fields
from
.models
import
UploadImage
from
django
import
forms
class
UserImage
(forms.ModelForm)
:
class
meta
:
# To specify the model to be used to create form
models = UploadImage
# It includes all the fields of model
fields =
’__all__’
要显示此表单,我们需要在模板文件夹下创建 image_form.html文件 。
template/image.form.html
{% extends ’base.html’ %}
{% block content %}
<
form
method
=
"post"
enctype
=
"multipart/form-data"
>
{% csrf_token %}
{{ form.as_p }}
<
button
type
=
"submit"
>
Upload
</
button
>
</
form
>
{% if img_obj %}
<
h3
>
Succesfully uploaded : {{img_obj.caption}}
</
h3
>
<
img
src
=
"{{ img_obj.image.url}}"
alt
=
"connect"
style
=
"max-height:300px"
>
{% endif %}
{% endblock content %}
注意 - 我们使用 enctype =“multipart/form-data”,它允许通过 POST 发送文件。如果没有 enctype,用户无法通过 POST 请求发送文件。必须包含在表单中才能处理文件或图像。
现在我们将创建视图来处理请求。
view.py
from
django.shortcuts
import
redirect, render
from
sampleapp.forms
import
UserImageForm
from
.models
import
UploadImage
def
image_request
(request)
:
if
request.method ==
’POST’
:
form = UserImageForm(request.POST, request.FILES)
if
form.is_valid():
form.save()
# Getting the current instance object to display in the template
img_object = form.instance
return
render(request,
’image_form.html’
, {
’form’
: form,
’img_obj’
: img_object})
else
:
form = UserImageForm()
return
render(request,
’image_form.html’
, {
’form’
: form})
让我们为此视图创建 URL 。
sampleapp/urls.py
from
django.urls
import
path
from
.views
import
image_request
app_name =
’sampleapp’
urlpatterns = [
path(
’’
, image_request, name =
"image-request"
)
运行本地主机服务器后我们得到以下表格。
输出:
该文件将存储在我们在模型字段中提到的 媒体/图像 中。
结论
在本教程中,我们讨论了如何使用 Django 上传图像。Django 提供了简单的接口来执行图像或文件上传。我们只需要进行一些配置并在模型表单的字段中定义一个 ImageField 即可。我们还可以按照相同的过程上传任何文件(.xml、.pdf、.word、.etc),但我们需要在模型字段中将 ImageField 转换为 FileField。
-
利用 Python 开发 App 实战!
-
Django教程-Django 用户创建表单
-
Linux 命令 su 和 sudo 的区别
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
