ToB企服应用市场:ToB评测及商务社交产业平台

标题: 探索Django:从项目创建到图片上传的全方位指南 [打印本页]

作者: 惊落一身雪    时间: 2024-5-20 00:16
标题: 探索Django:从项目创建到图片上传的全方位指南
Django是什么

Django 是一个流行的 Python Web 开辟框架,它提供了一系列工具和库,用于帮助开辟职员构建高效、可扩展的 Web 应用程序。Django 的目标是让开辟者能够以快速和简朴的方式构建复杂的 Web 应用,通过提供很多预构建的组件和功能,如 ORM(对象关系映射)、表单处理、认证系统、管理界面等,从而降低了开辟工作的复杂性。
本日,我们将会以一个示例为例,来演示关于图像上传的操作。
项目创建

条件条件

要顺利完成本教程,你需要具备以下条件:
环境配置

起首,要在新项目中执行以下下令:
  1. pip install django
复制代码
安装完成后,我们现在开始执行以下步骤,以创建一个名为 xiaoYuGallery 的 Django 项目:
  1. django-admin startproject xiaoYuGallery
  2. cd xiaoYuGallery
  3. py manage.py startapp demo
复制代码
admin端图像处理

现在,我们需要打开位于项目目录下的 settings.py 文件,并在已安装应用程序列表 (INSTALLED_APPS) 中举行注册,以便将我们的 demo 应用程序纳入其中。请参考下面的示例代码:
  1. INSTALLED_APPS = [
  2.     'django.contrib.admin',
  3.     'django.contrib.auth',
  4.     'django.contrib.contenttypes',
  5.     'django.contrib.sessions',
  6.     'django.contrib.messages',
  7.     'django.contrib.staticfiles',
  8.     'demo',  # 这是我们新增的应用程序
  9. ]
复制代码
确保在列表中添加 demo 这一行,而且位于其他 Django 内置应用程序的下方,这样可以确保我们的应用程序能够正确加载和运行。
当我们配置Django时,我们必须明确指定媒体文件的URL和存储位置。这可以通过设置MEDIA_URL和MEDIA_ROOT来完成。因此,在settings.py文件中,我们需要添加以下内容:
  1. import os
  2. MEDIA_URL = '/media/'
  3. MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
复制代码
为了确保用户在开辟过程中能够上传图片,我们需要在项目级的urls.py文件中举行相应设置,以便举行测试。
  1. from django.contrib import admin
  2. from django.urls import path
  3. from django.conf import settings
  4. from django.conf.urls.static import static
  5. urlpatterns = [
  6.     path('admin/', admin.site.urls),
  7. ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
复制代码
在models.py文件中,使用Django框架中的模型类来定义一个名为Image的模型。在这个模型中,我们定义了两个字段:
这个模型将允许我们在数据库中存储图片的标题和相应的图片文件,而且可以通过Django的ORM(对象关系映射)举行管理和操作。
  1. from django.db import models
  2. class Image(models.Model):
  3.     title = models.CharField(max_length=20)
  4.     photo = models.ImageField(upload_to='pics')
复制代码
在admin.py 中我们定义了一个名为imageAdmin的类,它继续自admin.ModelAdmin。在这个类中,我们可以自定义模型在背景管理界面中的表现方式。在这个例子中,我们通过设置list_display属性,指定了在Image模型的列表页面中表现哪些字段。在这里,我们盼望表现图片的标题和对应的图片文件。
最后,我们使用admin.site.register()函数将Image模型和imageAdmin类关联起来,这样就可以在背景管理界面中对Image模型举行管理,而且按照我们定义的方式举行表现。
  1. from django.contrib import admin
  2. from .models import Image
  3. class imageAdmin(admin.ModelAdmin):
  4.     list_display = ["title", "photo"]
  5. admin.site.register(Image, imageAdmin)
复制代码
在views.py ,我们添加这段代码,它是一个Django视图函数,用于处理用户哀求并返回相应的网页内容。
  1. from django.shortcuts import render
  2. from .models import Image
  3. # Create your views here.
  4. def index(request):
  5.     data = Image.objects.all()
  6.     context = {
  7.         'data' : data
  8.     }
  9.     return render(request,"display.html", context)
复制代码
在display.html 里面渲染页面
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4.    
  5.     <meta charset="utf-8">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1">
  7.    
  8.     <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
  9.     <title>Demo Gallery</title>
  10. </head>
  11. <body  >
  12.     {% for x in data %}
  13.    
  14.         
  15.             <img src="https://www.cnblogs.com/{{ x.photo.url }}"  alt="{{ x.title }}">
  16.             
  17.                 <h5 >{{ x.title }}</h5>
  18.             
  19.         
  20.    
  21.     {% endfor %}
  22. </body>
  23. </html>
复制代码
urls.py中配置URLs
  1. from django.contrib import admin
  2. from django.urls import path, include
  3. from django.conf import settings
  4. from django.conf.urls.static import static
  5. urlpatterns = [
  6.     path('admin/', admin.site.urls),
  7.     path('', include('demo.urls')) # new
  8. ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
复制代码
表现图片

执行一下举行数据库迁徙的下令:
py manage.py makemigrations:这个下令告诉 Django 你对模型举行了更改,而且需要将这些更改记录下来以便在数据库中举行更新。
py manage.py migrate:Django 会读取之前生成的迁徙文件,并根据这些文件中的指令,在数据库中执行相应的更改,例如创建新的表、修改表布局或添加新的字段等。
  1. py manage.py createsuperuser
复制代码
当你运行这个下令时,Django 会提示你输入超等用户的用户名、电子邮件地点和密码。输入完毕后,Django 将会在数据库中创建一个新的超等用户,并使用你提供的信息设置其登录凭据。这个超等用户可以用来登录到 Django 的背景管理界面,举行网站管理和维护工作。
启动服务,一旦服务器启动,你就可以在欣赏器中访问你的 Django 项目,并在开辟环境中举行测试和调试。默认环境下,开辟服务器会监听本地主机的 8000 端口,你可以通过在欣赏器中输入 http://127.0.0.1:8000/ 或 http://localhost:8000/ 来访问你的网站。
  1. py manage.py runserver
复制代码
看下管理背景效果,点击add也会举行添加图片。

用户图片上传

在这个示例中,我们将创建一个名为 forms.py 的文件,并在其中定义一个用于处理上传表单的类,将其与我们的 Image 模型相关联。这样做可以确保我们的代码布局清晰,易于维护和扩展。
  1. from django import forms
  2. from .models import Image
  3. class ImageUploadForm(forms.ModelForm):
  4.     class Meta:
  5.         model = Image
  6.         fields = ['title', 'photo']
复制代码
在您的项目的templates文件夹中,您可以添加一个名为upload.html的文件。
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Image Upload</title>
  8.    
  9. </head>
  10. <body>
  11.     <form method="POST" enctype="multipart/form-data">
  12.         {% csrf_token %}
  13.         {{ form.as_p }}
  14.         <button type="submit"> Upload Image </button>
  15.     </form>
  16. </body>
  17. </html>
复制代码
在views.py更新下代码
  1. def uploadView(request):                                      
  2.     if request.method == 'POST':
  3.         form = ImageUploadForm(request.POST, request.FILES)#如果请求方法为 POST,这一行创建一个 `ImageUploadForm` 的实例,通过将 `request.POST` 和 `request.FILES` 传递给它来填充表单数据。`request.POST` 包含用户通过 POST 方法提交的表单数据,而 `request.FILES` 包含用户上传的文件数据。
  4.         if form.is_valid(): #这一行检查表单数据是否有效,即是否通过了表单的验证。
  5.             form.save()#如果表单数据有效,这一行将保存表单数据到数据库中。
  6.             return redirect('index')
  7.     else:
  8.             form = ImageUploadForm()
  9.     return render(request, 'upload.html', {'form': form})
复制代码
demo文件中更新下urls.py
  1. from django.urls import path
  2. from .import views
  3. urlpatterns = [
  4.     path('', views.index, name='index'),
  5.     path('upload_image/', views.uploadView, name= 'upload_image')
  6. ]
复制代码
我们来看下效果:

首页效果:

结语

通过本文,我们深入相识了 Django 框架的一些基本概念和使用方法,以及如何使用 Django 构建一个简朴的图像上传应用程序。从项目创建到环境配置,再到 admin 端图像处理和用户图片上传,我们逐步学习了如何使用 Django 提供的功能快速搭建 Web 应用。无论是对于初学者照旧有一定履历的开辟者,掌握 Django 都能够帮助我们更高效地开辟出高质量的 Web 应用。盼望本文能够为您提供一些帮助和启发,让您更加深入地相识 Django,并能够在实际项目中运用所学知识。
我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。身兼掘金优秀作者、腾讯云内容共创官、阿里云专家博主、华为云云享专家等多重身份。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4