使用django表单,使网页添加上传文件,并分析文件。
开发环境是:
apache + python + django+ eclipse(开发环境)
欲达到目的:
在网页上,添加上传文件控件。然后读取csv文件,并分析csv文件。
操作步骤:
django 是MVC的设计模式 (模型M,视图V,控制器C)
1、从django的基本模型中,构建自己的模型。
在myforms.py文件中添加如下代码,之后在html显示的表单数据就可以采用这个模型的数据了。
from django import forms
from django.views.decorators.csrf import csrf_exempt @csrf_exempt
class BatchOptForm(forms.Form):
stype = forms.ChoiceField(choices=((1,'type1'),(2,'type2'),(3,'type3'),(4,'type4'),(5,'type5'),(6,'type6'),), label="batchtype")
batchfile = forms.FileField(required=True, label="数据文件")
2、在视图类viewsql.py中,完成对表单的调用。
def dosomething(request):
data = _getReqData(request, sys._getframe(0).f_code.co_name)
if 'whitelist' != data.get('opt'):
batchform = BatchOptForm(request.POST, request.FILES) #调用模型
if batchform.is_valid():
batchform.fields['stype'] = forms.ChoiceField(choices=((1,'微信'),(2,'手Q'),), label='批量白名单类型')
batchform.fields['batchfile'] = forms.FileField(required=True, label=none)
return render_to_response(whitelist.html, {'form':batchform}) #将表单render 到网页里
3、通过urls.py这个统一资源来管理资源
url(r'^whitelist/$', 'protocoltool.views.whitelist', name='whitelist'),
4、在whitelist.html里贴上表单标签
<table id="" border='' bordercolor="#FFFFFF" width='98%' cellpadding='' cellspacing='' align='center' bgcolor=''>
<tbody>
<tr style="vertical-align:middle" >
<td style="width: 45%;" > {{form.stype.label}} </td>
<td style="width: 50%;" > {{form.stype}} </td>
</tr>
<tr style="vertical-align:middle"
<td style="width: 20%" > {{form.batchfile.label}} </td>
<td style="width: 30%" > {{form.batchfile}} </td>
<button style="width:80px;" class="btn btn-primary" data-loading-text="导入中..." id='IMPORT_WL' onclick='importbatch()'; type="button">批量导入</button></td>
</tr>
</tbody>
</table>
5、在 脚本cncsql.js 文件里,相应 importbatch()
function importbatch()
{
var fname = $('#id_batchfile').val().trim(); # 自动生成的
if ("" == fname) {
alert("未选择批量开户文件");
return;
} $('#IMPORT_WL').button("loading");
var fdata = new FormData(); #构建表单数据
fdata.append('opt', 'whitelist');
fdata.append('stype', $('#id_stype').val()); #自动生成的
fdata.append('batchfile', $('#id_batchfile')[0].files[0]);
$.ajax({
url : '/whitelist/',
data : fdata,
cache : false,
contentType : false,
processData : false,
type : 'POST',
success : function(rdata) {
$('#IMPORT_WL').button("reset");
rdata = JSON.parse(rdata);
………
}
});
}
6、得到效果图

7、通过batchform.cleaned_data['batchfile'] 来调用和处理相关数据
csvfile =batchform.cleaned_data['batchfile']
for line in csvfile.read().split(linesep):
line = line.strip()
……
这样就完成了表单的建模、视图构成和数据处理
使用django表单,使网页添加上传文件,并分析文件。的更多相关文章
- 上传文件表单file,限制上传文件类型的方法--参数accept
我们使用<input type="file" />来上传文件,但是当你只想要上传某种格式的文件,比如说(jpg)文件时.可以通过accept来限制. <form& ...
- [Nginx 2] form表单提交,图片上传
导读:昨晚恶补了一些Nginx服务器的东西,从整体上对Nginx有一个初步的了解.上午去找师哥问了问目前项目中的使用情况,然后就开始上传图片了.这里就简单总结整理一下今天的成果,以后接着提升.简单粗暴 ...
- 给Django后台富文本编辑器添加上传文件的功能
使用富文本编辑器上传的文件是要放到服务器上的,所以这是一个request.既然是一个request,就需要urls.py进行转发请求views.py进行处理.views.py处理完了返回一个文件所在的 ...
- HTML 文件类表单元素如何限制上传类型,Accept属性设置
需求描述:简单的控制file的选择类型 解决方法:使用HTML input file 的accept属性控制 实例: <form action="demo_form.asp" ...
- iframe和form表单实现ajax请求上传数据
form的target属性设置为iframe的name值时,表示提交到url后返回的数据显示到iframe区域 <form action="/upload.html" met ...
- 页面表单里的图片上传ENCTYPE="multipart/form-data"
ENCTYPE="multipart/form-data"用于表单里有图片上传. <form action="<%=basePath %>asyUplo ...
- 通过jQuery Ajax提交表单数据时同时上传附件
1.使用场景:需要使用ajax提交表单,但是提交的表单里含有附件上传 2.代码实现方式: <!-- HTML代码 --> <form method="post" ...
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile(转)
文件上传项目的源码下载地址:http://download.csdn.net/detail/swingpyzf/6979915 一.配置文件:SpringMVC 用的是 的MultipartFil ...
- python 全栈开发,Day111(客户管理之 编辑权限(二),Django表单集合Formset,ORM之limit_choices_to,构造家族结构)
昨日内容回顾 1. 权限系统的流程? 2. 权限的表有几个? 3. 技术点 中间件 session orm - 去重 - 去空 inclusion_tag filter 有序字典 settings配置 ...
随机推荐
- IOS开发—数据库的使用
1.首先封装方法(建一个DataBase类封装) 2.实现DataBase类的方法 3.第一步先建立一个表 4.进行插入.删除.更新 插入的sql语句:@"insert into user ...
- 【python】浅谈encode和decode
对于encode和decode,笔者也是根据自己的理解,有不对的地方还请多多指点. 编码的理解: 1.编码:utf-8,utf-16,gbk,gb2312,gb18030等,编码为了便于理解,可以把它 ...
- nova分析(9)—— nova-novncproxy
nova提供了novncproxy代理支持用户通过vnc来访问虚拟机,用户可以通过websocket.java客户端或者spicehtml5来访问.通过websket访问虚拟机的功能已经集成到hori ...
- LintCode "Backpack"
A simple variation to 0-1 Knapsack. class Solution { public: /** * @param m: An integer m denotes th ...
- bzoj3034: Heaven Cow与God Bull
Description __int64 ago,there's a heaven cow called sjy...A god bull named wzc fell in love with her ...
- 【MySQL】insert批量插入优化方案
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. ...
- Mysql游标的简明写法
-- cursor 游标/*declare 声明; declare 游标名 cursor for select_statement;open 找开; open 游标名fetch 取值; fetch 游 ...
- final specifier (since C++11)
Specifies that a virtual function cannot be overridden in a derived class or that a class cannot be ...
- 技巧分享——如何去除多余的CSS代码?
有时候,当你的CSS代码过多的时候,而且已经明确知道有部分CSS代码是多余的: 这时候,有什么较快的办法可以去除多余的CSS呢?? 下面分享一个实用技巧: 1.使用谷歌浏览器:Chrome .下载 2 ...
- Linux IO调度器相关算法介绍(转)
IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法.存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间.然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平 ...