您好,登錄后才能下訂單哦!
小編給大家分享一下Django如何實現圖片上傳和顯示,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
第1章 新建工程和創建app
新建工程和創建app就不用貼出來了,我這里是測試圖片上傳的功能能否實現,所以項目都是新的,正常在以有的app下就可以
第2章 模型層:
2.1創建數據庫
from django.dbimport models # Create your models here. class User(models.Model): name= models.CharField(max_length=50) # upload_to 指定上傳文件位置 # 這里指定存放在img/ 目錄下 headimg = models.FileField(upload_to="img/") # 返回名稱 def__str__(self): returnself.name
2.2初始化數據庫:
(mypy3) ? BBS python manage.py makemigrations Migrations for 'app01': app01/migrations/0001_initial.py - Create model User (mypy3) ? BBS python manage.py migrate Operations to perform: Apply all migrations: admin, app01, auth, contenttypes, sessions
第3章 修改配置文件
3.1settings中增加如下配置:
MEDIA_ROOT= os.path.join(BASE_DIR, 'media').replace("\\", "/") MEDIA_URL = '/media/'
3.2工程的urls文件:
from django.conf.urlsimport url from django.contrib import admin from django.urls import path, include from django.conf.urls.static import static from django.conf import settings urlpatterns = [ url(r'^admin/', admin.site.urls), # url(r'^regsiter/', views.regsiter), # url(r'', TemplateView.as_view(template_name="app01/index.html")), path('app01/', include('app01.urls')) ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
3.3app:
from django.urlsimport path from . import views app_name = 'app01' urlpatterns = [ path('add/', views.add, name='add'), # path('index/', views.index, name='index'), ]
3.4修改模版配置:
TEMPLATES= [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(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', ], }, }, ]
第4章 數據校驗模塊:
數據需要校驗的情況下,如果你不想校驗,這個可以忽略
4.1在app下創建forms文件:
from django import forms # 表單類用以生成表單 class AddForm(forms.Form): name = forms.CharField() headimg = forms.FileField()
第5章 視圖層:
5.1編寫圖片處理邏輯
from django.shortcutsimport render from .models import User from .forms import AddForm # Create your views here. def add(request): # 判斷是否為post 方法提交 ifrequest.method == "POST": af = AddForm(request.POST, request.FILES) # 判斷表單值是否和法 ifaf.is_valid(): name = af.cleaned_data['name'] headimg = af.cleaned_data['headimg'] user = User(name=name, headimg=headimg) user.save() returnrender(request, 'app01/index.html', context={"user":user}) else: af = AddForm() returnrender(request, 'app01/add.html', context={"af":af})
第6章 模版層:
上傳的html
<!-- templates/users/add.html --> <!doctype html> <html> <head> <title>Add</title> <meta charset="utf-8"> </head> <body> <h2>Add!</h2> <form method="post" enctype="multipart/form-data" action="{% url'app01:add' %}"> {%csrf_token %} {{ af.as_p }} <inputtype="submit" value="OK"/> </form> </body> </html>
查看的html
<!-- templates/users/index.html --> <!doctype html> <html> <head> <title>Detail</title> <meta charset="utf-8"> </head> <body> <p>{{user.name}}</p> <img width="50%" height="50%"src="/media/{{ user.headimg }}"> </body> </html>
看完了這篇文章,相信你對“Django如何實現圖片上傳和顯示”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。