在这里,我将为您提供我们将帮助您举例说明如何在 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