from django.shortcuts import render,redirect
from app01 import models
from django import forms
VIEWS文件
class BookForm(forms.Form):
name = forms.CharField(
label = '书名',
required = True,
error_message = {
'required': '书名不能为空'
}
)
price = forms.IntegerField(
label = '书名',
required = True,
error_message = {
'required': '书名不能为空'
}
)
photo = forms.ImageField(
label = '图片',
required = True,
error_message = {
'required':'必须选择图片!!!'
}
)
def book(request):
book_form = BookForm()
if request.method == 'POST':
#1.验证,如果通过往下走
book_form = BookForm(request.POST, request.FILES)
if book_form.is_valid():
#2.获取参数
name = request.POST.get('name')
price = request.POST.get('price')
photo = request.FILES.get('photo') #photo此时是一个对象
photo_name = request.FILES.get('photo').name
#3.保存到数据库,注意这里的图片在数据库中只能存放路径
books = models.Book()
books.name = name
books.price = price
books.photo = 'image/' + photo_name
#4.将图片保存到后台static 文件中
path = 'static/image/' + photo_name
with open(path, 'wb') as f :
for i in photo.chunks(): #返回一个迭代器对象,来读取内容
f.write(i)
books.save()
return redirect('/app01/book_list')
return render(request, 'app01/book.html', {'book_form': book_form})
HTML BOOK.html
<form action="/app01/book/" method="post" enctype="multipart/form-data" novalidate>
{% csrf_token %}
{{ book_form.as_p }}
<p>
<input type="submit" value="保存">
</p>
</form>
HTML book_list.html
{% for book in book_lst %}
<tr>
<td>{{ forloop.counter }}</td>
<td><img width="100px" height="100px" src="{% static book.photo.name %}" alt="图片"></td>
<td>{{ book.name }}</td>
<td>{{ book.price }}</td>
{# <td>{{ book.photo }}</td>#}
</tr>
{% endfor %}