python与html交互实现图片上传_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

Add

Add!

{%csrf_token %}

{{ af.as_p }}

查看的html

Detail

{{user.name}}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值