[英]How to upload image using django raw form
Im trying to upload image using django raw form.我正在尝试使用 django 原始表单上传图像。 How do I get image from the form?
如何从表单中获取图像? So that I can assign it to a model and save it?
这样我就可以将它分配给模型并保存它? Is there a method like
cleaned_data.get()
for images?有没有像
cleaned_data.get()
的图像方法?
models.py模型.py
class University(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
name = models.CharField(max_length=255)
about = models.TextField(max_length = 2083)
facts = models.TextField(max_length=2083, blank=True, null=True)
type_of_university = models.CharField(max_length = 20, choices = UNIVERSITY_TYPE_CHOICES)
logo = models.ImageField(upload_to = 'logo', blank=True, null=True)
cover_photo = models.ImageField(upload_to= 'cover_photo', blank=True, null=True)
def __str__(self):
return self.name
forms.py表格.py
class UniversityForm(forms.Form):
name = forms.CharField(max_length=255)
about = forms.CharField()
facts = forms.CharField(required=False)
type_of_university = forms.ChoiceField(choices=UNIVERSITY_TYPE_CHOICES)
logo = forms.ImageField(required=False)
cover_photo = forms.ImageField(required=False)
views.py视图.py
class UniversityFormView(View):
def get(self, *args, **kwargs):
main_form = UniversityForm()
context = {
'main_form':main_form
}
return render (self.request, 'university/initial_form.html', context)
def post(self, *args, **kwargs):
main_form = UniversityForm(self.request.POST, self.request.FILES)
context = {
'main_form': main_form
}
if main_form.is_valid():
name = main_form.cleaned_data.get('name')
about = main_form.cleaned_data.get('about')
facts = main_form.cleaned_data.get('facts')
type_of_university = main_form.cleaned_data.get('type_of_university')
logo = main_form.cleaned_data.get()'logo')
cover_photo = main_form.cleaned_data.get('cover_photo')
university = University(
user = self.request.user,
name = name,
about = about,
facts = facts,
type_of_university = type_of_university,
logo = logo,
cover_photo = cover_photo
)
university.save()
messages.success(self.request, "Form submitted successfully!")
return redirect('address_form')
else:
messages.warning(self.request, "Something went wrong!")
return redirect('university_form')
return render (self.request, 'university/initial_form.html', context)
Thanks!谢谢!
use a model form instead of form and assign user from request.user in views使用模型表单而不是表单并在视图中从 request.user 分配用户
class UniversityCreateForm(forms.ModelForm):
class Meta:
model = University
# dont have to add user field here
fields = ['name',
'-----',
]
class EducationCreateView(CreateView):
model = University
form_class = UniversityCreateForm
template_name = 'your.html'
success_url = reverse_lazy('/')
def form_valid(self, form):
form.instance.user = self.request.user
valid_data = super(EducationCreateView, self).form_valid(form)
return valid_data
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.