Django基础入门08

本文介绍如何在Django项目中实现图片上传至数据库,并在前端显示这些图片。包括安装所需模块、配置数据库模型、设置媒体文件路径、注册模型、调整视图与模板等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Day 09 Django上传图片到数据库并在前端显示

 1. 创建文件夹image用于存储将要上传的图片

  我是在HelloWorld项目下创建了此文件夹(在哪里创建都可以)

2.安装pillow模块(使用ImageField先安装pillow模块)

进入python目录  使用命令pip3 install pillow进行安装

3.在APP(TestModel)的models中添加如下代码(如何创建APP参见 Day05 Django模型)建立模型。

class Image(models.Model):

  name=models.CharField(max_length=50)

  image=models.ImageField(upload_to='logo')

  def _str_(self):

         returnself.name

这里的upload_to是指定图片存储的文件夹名称,上传文件之后会自动创建。

4.   建立好模型,需要进行迁移操作(也就是告诉Djangon你的模型发生了变化)

在命令行输入如下:

python manage.py makemigrations  
python manage.py migrate 

 

刷新数据库如下:

5.  在settings.py中,设置MEDIA_URL和MEDIA_ROOT

MEDIA_URL = '/media/'

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

在settings文件末尾加上以上两行代码即可。

我们需要告诉Django,媒体文件的位置在哪里。这样就和数据库存储的路径相对应了,具体就是MEDIA_ROOT指定目录,upload_to就是在这个目录下进行操作。与步骤3中的对应。

6.     在上一节的基础上,我们学会了admin 后台管理,上一节我们已经创建了超级用户,此处不再赘述。

7.     在在app下admin.py中将需要上面创建的模型进行添加。

修改代码如下:

  from django.contrib import admin

from TestModel.models import Test,Contact,Tag,Image

# Register your models here.

class TagInline(admin.TabularInline):

    model = Tag

 

class ContactAdmin(admin.ModelAdmin):

    list_display = ('name','age','email') # list

    search_fields = ('name',)

    inlines = [TagInline]  # Inline

    fieldsets = (

        ['Main',{

           'fields':('name','email'),

        }],

        ['Advance',{

            'classes':('collapse',),

            'fields': ('age',),

        }]

    )

admin.site.register(Contact, ContactAdmin)

admin.site.register([Test])

admin.site.register(Image)

8.打开Django服务器,在浏览器中访问http://127.0.0.1:8000/admin即可出现以下页面:

 

点击Add,即可出现以下页面,进行图片的添加

9.     添加后在数据库中就可以看到插入的图片


 

10.     接下来是如何在前台调取数据库中的图

修改Helloworld/view.py代码如下

#http请求给view.py

fromdjango.shortcuts import render

fromTestModel.models import Image

defimage(request):

    img= Image.objects.all()

        return render(request, 'showing.html',{'img':img})

11.在Helloworld\templates 下新建'showing.html'显示图片,代码如下:

{% for iin img %}

<imgsrc="{{ MEDIA_URL }}{{ i.image }}">

{% endfor%}

12.打开settings.py修改代码

  TEMPLATES = [

    {

        'BACKEND':'django.template.backends.django.DjangoTemplates',

        'DIRS':[BASE_DIR+"/templates",],

        'APP_DIRS': True,

       'OPTIONS': {

            'context_processors': [

               'django.template.context_processors.debug',

               'django.template.context_processors.request',

               'django.contrib.auth.context_processors.auth',

                'django.contrib.messages.context_processors.messages',

                         'django.template.context_processors.media',#### add here

               ],

        },

    },

]

13修改urls.py添加路径

fromdjango.conf.urls import url

from .import view

fromdjango.contrib import admin

from django.conf.urls.staticimport static

fromdjango.conf import settings

urlpatterns=[

url(r'^hello$', view.hello),

url(r'^image$',view.image),

url(r'^admin/',admin.site.urls)

]

 但到这里还是不能正常显示图片,如下图

 

14. 修改urls.

fromdjango.conf.urls import url

from .import view

fromdjango.contrib import admin

fromdjango.conf.urls.static import static

fromdjango.conf import settings

urlpatterns=[

url(r'^hello$', view.hello),

url(r'^image$', view.image),

url(r'^admin/',admin.site.urls)

]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

完成图片的展示


 

 

  

 

  

 

 


### Django 基础入门教程 Django 是一个功能强大且高效的 Web 框架,能够帮助开发者快速构建可扩展的 Web 应用程序[^1]。以下是关于 Django 基础入门的知识点和步骤。 #### 1. 环境准备 在开始学习 Django 之前,确保已经安装了 Python 和虚拟环境工具(如 `venv`)。创建并激活虚拟环境后,使用以下命令安装 Django: ```bash pip install django ``` #### 2. 创建 Django 项目 使用 Django 提供的命令行工具创建一个新的项目: ```bash django-admin startproject myproject ``` 这将生成一个名为 `myproject` 的目录,其中包含项目的初始文件结构。 #### 3. 配置 `settings.py` 在 `settings.py` 文件中,确保 `INSTALLED_APPS` 包含 `django.contrib.staticfiles`,这是处理静态文件所必需的模块[^4]。 #### 4. 创建 Django 应用 在一个 Django 项目中,应用是核心组件。使用以下命令创建一个新的应用: ```bash python manage.py startapp news ``` 这将生成一个名为 `news` 的应用目录。 #### 5. 配置 URL 路由 在项目的主 `urls.py` 文件中,关联新创建的应用的路由。代码如下: ```python from django.contrib import admin from django.urls import path, include, re_path urlpatterns = [ path('admin/', admin.site.urls), re_path(r'^news/', include('news.urls')), ] ``` 上述代码将 `news` 应用的路由包含到主项目中[^3]。 #### 6. 创建应用的 `urls.py` 在 `news` 应用目录下创建一个 `urls.py` 文件,并定义该应用的路由规则。例如: ```python from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ] ``` #### 7. 创建视图函数 在 `news` 应用的 `views.py` 文件中定义视图函数。例如: ```python from django.http import HttpResponse def index(request): return HttpResponse("Hello, world!") ``` #### 8. 运行开发服务器 启动 Django 内置的开发服务器以测试应用是否正常运行: ```bash python manage.py runserver ``` 访问浏览器中的 `http://127.0.0.1:8000/news/`,应该能看到 "Hello, world!" 的输出。 #### 9. 使用模板系统 Django 提供了一个强大的模板系统。在 `news` 应用目录下创建一个 `templates` 文件夹,并在其中创建 HTML 文件。例如: ```html <!-- templates/index.html --> <!DOCTYPE html> <html> <head> <title>News App</title> </head> <body> <h1>Welcome to the News App!</h1> </body> </html> ``` 然后在视图函数中返回该模板: ```python from django.shortcuts import render def index(request): return render(request, 'index.html') ``` #### 10. 静态文件管理 在 `settings.py` 中配置静态文件路径,以便正确加载 CSS、JavaScript 等资源。例如: ```python STATIC_URL = '/static/' STATICFILES_DIRS = [BASE_DIR / "static"] ``` --- ### 注意事项 - 在 Django 项目中,`__init__.py` 文件用于标识目录为 Python 包,有助于组织代码结构[^2]。 - 学习 Django 时,建议从基础概念入手,逐步深入到高级功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值