django中上传图片的写法(转)

view参数

@csrf_exempt
def before_upload_avatar(request):
    before = True
    return render_to_response(‘accounts/before_upload_avatar.html‘,
                              {‘before‘: before},
                              context_instance=RequestContext(request))

配置的url(r‘^upload_avatar/$‘, views.before_upload_avatar, name=‘prepare_upload‘),

在html中写

{% extends "base2.html" %}

{% block head_css %}

<link href="/static/media/css/register.css?v=0.9" rel="stylesheet" type="text/css" />

{% endblock %}

{% block content %}

<div class="change_avatar">

<h4>请选择头像上传</h4>

<form enctype="multipart/form-data" method="POST" action="{% url ‘accounts:uploaded‘ %}">

<input type="file" name="select"/>

<button>Submit</button>

</form>

{% if not before %}

{% if error %}

error info:

{% for info in error %}

<h3>{{ info }}</h3>

{% endfor %}

{% endif %}

{% if not error %}

<img src="{{ path }}" width="128" height="128">

{% endif %}

{% endif %}

</div>

{% endblock %}

选择好文件点击submit后提交到accounts中的uploaded处理

关键注释:

491、492:装饰器:需要登录,免去post的csrf验证

497:判断是否选定文件

498:获得上传文件

500:设定图片路径

501:获得ret,用handle_upload_avatar处理

513:设定文件不能大于5M以及文件不能是exe格式文件。

515:对头像进行处理,返回一个List

519,520:假设路径不存在,创建目录

521-523:对文件重命名

524-526:移除原先头像

527:将新文件拷贝过去

530:返回页面

545:设置temp_nane,用时间和随机数来命名

546:设置temp_path

547:打开temp_path并对其进行读写

548,549:将头像上传到这个路径

551:获取上传图片类型例如jpg,png等

552-554:假如不是图片类型文件,移除文件并报错

555:返回1,文件类型,2,temp_name,3,temp_path

django中上传图片的写法(转)

时间: 2024-08-04 19:55:54

django中上传图片的写法(转)的相关文章

关于Django中的数据库操作API之distinct去重的一个误传

关于Django中的数据库操作API之distinct去重的一个误传 最近在做一个Server的项目,后台框架是Apache mod_wsgi + django.django是一个基于Python的Web开发框架,功能十分强大,至于有多强大,还是读者们自己去体验吧.我在这里要说的一个问题是关于Python的ORM功能的.问题就在django提供的数据库操作API中的distinct()函数,了解SQL语句的读者都应该知道,DISTINCT关键字可以在select操作时去重.django里的这个d

上传图片的写法

<form id="uploadAvatarForm" action="{% url "upl:upload" %}" method="post" enctype="multipart/form-data">        {% csrf_token %}        <input type="file" id="uploadAvatar" nam

django -- ImageField 上传图片修改头像

django -- ImageField 上传图片修改头像 头像 Django ImageField 折腾了差不多一个星期的空闲时间,刚上手不久的 Django 为了上传个头像被弄得没了脾气 定义模型 model.py headImg = models.ImageField(upload_to = 'img', default="img/4.jpg") ImageField 是 Django 的内置数据类型,可以较方便的时间图片处理 upload_to 表示要上传到的目录,会在 med

Django中的日期处理注意事项和自定义时间格式转换

我们在用Django创建models时,常常会涉及时间日期字段的处理,Django里日期相关Field有DateTimeField.DateField和TimeField三种类型,看似简单,但其中有一些容易出错的地方需要注意:另外,如果不习惯Django的默认时间格式,也可以自定义的修改. DateTimeField.DateField和TimeField,其值分别对应着Python里的datetime.datetime.datetime.date和datetime.time三个实例,这三个Fi

Django中ORM介绍和字段及其参数

ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中. ORM在业务逻辑层和数据库层之间充当了桥梁的作用. ORM的由来 字母‘O’起源于“对象”(Object),'R'代表“关系”(Relational). 几乎所有的软件开发过程中都会涉及到对象和关系数据库.在用户层面和业务逻辑层

Django中CSS加载background url(‘‘)问题

在django中, 默认CSS中如果有 background url('images/a.jpg') 这类的属性,会被django当成URL来解析 这样会造成找不到该文件的问题. 所以为了解决这个问题,首先需要配置setting.py, 配置STATICFILES_DIRS STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) 然后把需要引用的文件放入static目录 然后在html文件夹中,开头加入 {% load staticfil

Django中的app及mysql数据库篇(ORM操作)

Django常见命令 在Django的使用过程中需要使用命令让Django进行一些操作,例如创建Django项目.启动Django程序.创建新的APP.数据库迁移等. 创建Django项目 一把我们都新建一个文件夹来存放项目文件,切换到这个目录下,启动命令行工具.创建一个名为mysite的Django项目: django-admin startproject mysite 创建好项目之后,可以查看当前目录下多出一个名为mysite的文件夹,mysite的文件夹目录结构如下: mysite/ ma

django中的url控制

1.django中的第一个控件:url控制  (路由分发) urls.py:请求路径与视图函数的之间的关系 步骤: 1.首先是要配置环境,   2.其次就是引路径   3.在视图的文件夹里面写相应的函数 简单使用: 1.通过正则加括号分组获取请求参数  (正则只是针对字符串格式的匹配)   2.一般在写地址的时候用正则中的有名分组,这样以后在调用的时候变量调用的时候直接用的是关键字传参,就可以随便的去书写参数的位置   3.分发:include(如果出现特别多的url写在一个urls中是非常麻烦

django中的CBV

CBV介绍 我们在写一个django项目时,通常使用的都是FBV(function base views) 而CBV(class base views)也有它自己的应用场景,比如在写一个按照rest规范写接口时,CBV的适用性就比FBV更强 先来看看CBV在django中的写法,与FBV有什么不同的地方 url(r'^students/', views.StudentsView.as_view()) 路由 from django.views import View class StudentsV