Django之通过后台创建前端表单

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 %}

猜你喜欢

转载自blog.csdn.net/weixin_44183162/article/details/88043619