English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Para aplicaciones web, para poder cargar archivos (imágenes, canciones, formato PDF, texto ...), es muy útil. En esta sección discutiremos cómo usar Django para cargar archivos.
Antes de comenzar a desarrollar la carga de imágenes, asegúrese de que la biblioteca de imágenes de Python (PIL) ya esté instalada. Ahora hablemos de la carga de imágenes, creemos un archivo de configuración de formato en myapp/forms.py -
# Nombre de archivo : example.py # Derechos de autor : 2020 Por w3codebox # Autor por: es.oldtoolbag.com # Fecha : 2020-08-08 #-*- coding: utf-8 -*- from django import forms class ProfileForm(forms.Form): name = forms.CharField(max_length = 100) picture = forms.ImageFields()
正如你所看到的,这里的主要区别仅仅是 forms.ImageField。ImageField字段将确保上传的文件是一个图像。如果不是,格式验证将失败。
现在,让我们创建一个 "Profile" 模型,以保存上传的资料。在 myapp/models.py -
# Nombre de archivo : example.py # Derechos de autor : 2020 Por w3codebox # Autor por: es.oldtoolbag.com # Fecha : 2020-08-08 from django.db import models class Profile(models.Model): name = models.CharField(max_length = 50) picture = models.ImageField(upload_to = 'pictures') class Meta: db_table = "profile"
正如所看到的模型,ImageField 使用强制性参数:upload_to. 这表示硬盘驱动器,图像保存所在的地方。注意,该参数将被添加到 settings.py文件中定义的MEDIA_ROOT选项。
现在我们有表单和模型,让我们来创建视图,在 myapp/ views.py -
# Nombre de archivo : example.py # Derechos de autor : 2020 Por w3codebox # Autor por: es.oldtoolbag.com # Fecha : 2020-08-08 #-*- coding: utf-8 -*- from myapp.forms import ProfileForm from myapp.models import Profile def SaveProfile(request): saved = False if request.method == "POST": #Get the posted form MyProfileForm = ProfileForm(request.POST, request.FILES) if MyProfileForm.is_valid(): profile = Profile() profile.name = MyProfileForm.cleaned_data["name"]
myapp//
# Nombre de archivo : example.py # Derechos de autor : 2020 Por w3codebox # Autor por: es.oldtoolbag.com # Fecha : 2020-08-08 /strong> /strong> </body> </html>
myapp//
# Nombre de archivo : example.py # Derechos de autor : 2020 Por w3codebox # Autor por: es.oldtoolbag.com # Fecha : 2020-08-08 /- acción="{% url "myapp.views.SaveProfile" %}" método="POST" <div style="máximo-ancho:470px;"> <centrar> <input type="texto" style="márgen-izquierda:20%;" indicador_de_entrada="Nombre" nombre="nombre" /> </center> </div> <salto_de_linea> <div style="máximo-ancho:470px;"> <centrar> <input type="archivo" style="márgen-izquierda:20%;" indicador_de_entrada="Imagen" nombre="imagen" /> </center> </div> <salto_de_linea> <div style="máximo-ancho:470px;"> <centrar> <button style="borde:0px;fondo:-color:#4285F4; márgen-arriba:8%; alto:35px; ancho:80%; márgen-izquierda:19%;"type"="submit" value="Login"> <strong>Login</strong> </button> </center> </div> </form> </body> </html>
A continuación, necesitamos emparejar las URL para comenzar: myapp/urls.py
# Nombre de archivo : example.py # Derechos de autor : 2020 Por w3codebox # Autor por: es.oldtoolbag.com # Fecha : 2020-08-08 from django.conf.urls import patterns, url from django.views.generic import TemplateView urlpatterns = patterns(), 'myapp.views', url(r'^profile',/', TemplateView.as_view(), template_name = 'profile.htmll', url(r'^guardado',/', 'GuardarProfile', name = 'guardado') )
Cuando se accede a"/myapp/profile",obtendremos el siguiente template profile.htmll mostrado -
Después de enviar el formato, el template guardado se mostrará como sigue -
Aquí solo explicamos el ejemplo de subida de imágenes, pero si desea subir otros tipos de archivos, simplemente reemplace ImageField en estos dos modelos y el campo de formulario FileField.