如何在 Python Django 中上传图片?

我将向您解释如何在 python django 中上传图像的示例。本教程将为您提供如何在 python django 中上传图像的简单示例。这个例子将帮助你如何以 django 形式上传图片。你可以理解一个django图片上传例子的概念。您将对如何在 python django 博客中上传图像执行以下操作。

在这里,我将为您提供我们将帮助您举例说明如何在 django 中上传图像。所以让我们看看下面的例子:

第 1 步:创建项目

在这一步中,我们将使用 django-admin 创建一个新的 django 项目。返回命令行界面并运行以下命令:

django-admin startproject example

第 2 步:创建应用程序

python3 manage.py startapp image

接下来需要在settings.py文件中添加如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'image',
]

第 3 步:数据库设置

下一步,我们将修改 settings.py 文件并更新数据库设置以配置 mydb 数据库:
settings.py

DATABASES = {  
    'default': {  
        'ENGINE': 'django.db.backends.mysql',  
        'NAME': 'example',  
        'USER':'root',  
        'PASSWORD':'root',  
        'HOST':'localhost',  
        'PORT':'3306'  
    }  
}  

第 4 步:更新 Setting.py 文件

下一步,我们将修改 settings.py 文件并添加以下代码:

  • MEDIA_ROOT:  用于在计算机中存储文件的服务器路径。
  • MEDIA_URL: 是浏览器通过 Http 访问文件的参考 URL。

settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

urls.py中,我们应该像这个 example/urls.py一样编辑配置

from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL,
                              document_root=settings.MEDIA_ROOT)

第 5 步:创建模型

在这一步中,我们将需要用于存储联系人的数据库模型。打开 image/models.py 文件并添加以下代码:
image/models.py

from django.db import models

# Create your models here.

class UserImage(models.Model):
    name = models.CharField(max_length=50)
    image = models.ImageField(upload_to='images/')

创建这些模型后,您需要使用以下命令创建迁移:

第 5 步:创建迁移

python manage.py makemigrations

成功运行上述命令后,进入 image/migrations/0001_initial.py
image/migrations/0001_initial.py

# Generated by Django 4.0.5 on 2022-06-27 09:36

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='UserImage',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=50)),
                ('image', models.ImageField(upload_to='images/')),
            ],
        ),
    ]

接下来,您需要使用以下命令迁移数据库:

python manage.py migrate

第 5 步:创建表格

在这一步中,我们需要在这里处理模型表单以使内容更易于理解。并添加以下代码: image/forms.py

from django import forms
from .models import *

class UserForm(forms.ModelForm):

    class Meta:
        model = UserImage
        fields = ['name', 'image']

第 6 步:创建视图

在这一步中,我们需要创建视图来执行获取记录到数据库。打开 image/views.py 文件并添加:
image/views.py

from django.http import HttpResponse
from django.shortcuts import render, redirect
from .forms import *
from django.contrib import messages

# Create your views here.
def userProfile(request):

    if request.method == 'POST':
        form = UserForm(request.POST, request.FILES)

        if form.is_valid():
            form.save()
            messages.success(request, 'Image Upload Successfully')
    else:
        form = UserForm()
    return render(request, 'profileImg.html', {'form' : form})

第 7 步:创建 Django 模板

在这一步中,如果您不知道,我将使用 bootstrap 4 脆皮表格,所以我将首先发布文章,您可以阅读此 如何在 Python Django 中使用 Bootstrap 4 表单?

接下来,打开 image/templates/profileImg.html 文件并添加: /image/templates/profileImg.html

{% load crispy_forms_tags %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Profile Image</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
    <div class="container mt-5 pt-5">
        <div class="row d-flex justify-content-center">
            <div class="col-md-8">
                {% if messages %}
                    <div class="alert alert-success alert-dismissible">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        {% for message in messages %}
                            {{ message }}
                        {% endfor %}
                    </div>
                {% endif %}
                <div class="card">
                    <div class="card-header bg-secondary text-white">
                        <h3>How to image Upload in Python Django ? - Tuts-Station.com</h3>
                    </div>
                    <div class="card-body">
                        <form method = "post" enctype="multipart/form-data">
                            {% csrf_token %}
                            {{ form|crispy }}
                            <hr>
                            <div class="row">
                                <div class="col-md-12 text-center">
                                    <button type="submit" class="btn btn-success">Upload</button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

第 8 步:创建网址

在本节中,我们将创建 url 来访问我们的视图。转到 urls.py 示例/urls.py 文件并按如下方式更新它:
example/urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from image.views import *

urlpatterns = [
    path('admin/', admin.site.urls),
    path('image-upload', userProfile, name = 'image_upload'),
]

if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL,
                              document_root=settings.MEDIA_ROOT)

第 9 步:运行服务器

在这一步中,我们将运行本地开发服务器来玩我们的应用程序,而无需将其部署到网络上。

python manage.py runserver

接下来,使用 Web 浏览器访问 http://localhost:8000/ 地址。

我希望它会帮助你……

how-to-image-upload-in-python-django

发表评论

邮箱地址不会被公开。 必填项已用*标注