可以通过以下步骤实现:
MEDIA_ROOT = '/path/to/media/folder'
MEDIA_URL = '/media/'
其中,MEDIA_ROOT是文件上传后保存的路径,MEDIA_URL是文件在网页中访问的URL。
from django.views.generic.edit import CreateView
from .models import Image
from .forms import ImageForm
class ImageCreateView(CreateView):
model = Image
form_class = ImageForm
template_name = 'image_create.html'
success_url = '/success/'
其中,model指定了模型类,form_class指定了表单类,template_name指定了渲染模板的路径,success_url指定了提交成功后的跳转页面。
from django import forms
from .models import Image
class ImageForm(forms.ModelForm):
class Meta:
model = Image
fields = ['image']
其中,fields指定了表单中需要显示的字段,这里只有一个字段image,用于接收图像文件。
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
其中,form.as_p会将表单渲染为p标签形式。
from django.urls import path
from .views import ImageCreateView
urlpatterns = [
path('create/', ImageCreateView.as_view(), name='image_create'),
]
这样,当访问/create/路径时,将会调用ImageCreateView视图类。
通过以上步骤,就可以在使用CreateView CBV提交表单时将图像文件保存到Django中。在提交成功后,图像文件将会保存到MEDIA_ROOT指定的路径中,并且在模型类Image中创建一个对应的记录。
领取专属 10元无门槛券
手把手带您无忧上云