开发环境是:

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表单,使网页添加上传文件,并分析文件。的更多相关文章

  1. 上传文件表单file,限制上传文件类型的方法--参数accept

    我们使用<input type="file" />来上传文件,但是当你只想要上传某种格式的文件,比如说(jpg)文件时.可以通过accept来限制. <form& ...

  2. [Nginx 2] form表单提交,图片上传

    导读:昨晚恶补了一些Nginx服务器的东西,从整体上对Nginx有一个初步的了解.上午去找师哥问了问目前项目中的使用情况,然后就开始上传图片了.这里就简单总结整理一下今天的成果,以后接着提升.简单粗暴 ...

  3. 给Django后台富文本编辑器添加上传文件的功能

    使用富文本编辑器上传的文件是要放到服务器上的,所以这是一个request.既然是一个request,就需要urls.py进行转发请求views.py进行处理.views.py处理完了返回一个文件所在的 ...

  4. HTML 文件类表单元素如何限制上传类型,Accept属性设置

    需求描述:简单的控制file的选择类型 解决方法:使用HTML  input file 的accept属性控制 实例: <form action="demo_form.asp" ...

  5. iframe和form表单实现ajax请求上传数据

    form的target属性设置为iframe的name值时,表示提交到url后返回的数据显示到iframe区域 <form action="/upload.html" met ...

  6. 页面表单里的图片上传ENCTYPE="multipart/form-data"

    ENCTYPE="multipart/form-data"用于表单里有图片上传. <form action="<%=basePath %>asyUplo ...

  7. 通过jQuery Ajax提交表单数据时同时上传附件

    1.使用场景:需要使用ajax提交表单,但是提交的表单里含有附件上传 2.代码实现方式: <!-- HTML代码 --> <form method="post" ...

  8. SpringMVC 文件上传配置,多文件上传,使用的MultipartFile(转)

    文件上传项目的源码下载地址:http://download.csdn.net/detail/swingpyzf/6979915   一.配置文件:SpringMVC 用的是 的MultipartFil ...

  9. python 全栈开发,Day111(客户管理之 编辑权限(二),Django表单集合Formset,ORM之limit_choices_to,构造家族结构)

    昨日内容回顾 1. 权限系统的流程? 2. 权限的表有几个? 3. 技术点 中间件 session orm - 去重 - 去空 inclusion_tag filter 有序字典 settings配置 ...

随机推荐

  1. 当"唐僧"没那么容易

    西游记 西游记的故事,无人不知. 但西游记里面的哲学与道理,却仍然值得我们去思考. 记得之前曾有一篇文章写到了西游记与团队管理,师徒四人就是一个完美的团队.之所以能够爬山涉水.克服万难,求得真经,无疑 ...

  2. java 反射机制01

    // */ // ]]>   java反射机制01 Table of Contents 1 反射机制 2 反射成员 2.1 java.lang.Class 2.2 Constructor 2.3 ...

  3. bzoj3136

    Description 给定m个素数和Q个询问.每个询问有n个人,每次操作可以任意选择其中的一个素数p(素数可以重复使用),然后去掉剩余人数 mod p个人.对于每个询问,我们想知道,至少需要多少步操 ...

  4. 一个快速、完善的Android开发框架整合实践(QuickAndroid)

    https://github.com/alafighting/QuickAndroid QuickAndroid 一个快速.完善的Android开发框架整合实践 QA项目简介 本框架QuickAndr ...

  5. 在Myeclipse中移除项目对Hibernate的支持

    在Myeclipse中移除项目对Hibernate的支持 在使用Hibernate框架进行开发时可能会遇到配置错误或者需要删除Hibernate支持的情况.下面就说一下如何彻底移除项目的Hiberna ...

  6. 最全的Android源码目录结构详解

    Android 2.1|-- Makefile|-- bionic                        (bionic C库)|-- bootable                (启动引 ...

  7. 访问修饰符private

    private(C# 参考) private 关键字是一个成员访问修饰符. 私有访问是允许的最低访问级别. 私有成员只有在声明它们的类和结构体中才是可访问的,如下例所示: class Employee ...

  8. Linux 2.6 内核实时性分析 (完善中...)

      经过一个月的学习,目前对linux 下驱动程序的编写有了入门的认识,现在需要着手实践,编写相关的驱动程序. 因为飞控系统对实时性有一定的要求,所以先打算学习linux 2.6 内核的实时性与任务调 ...

  9. RMAN_Oracle RMAN的常用Command命令

    2014-12-11 Created By BaoXinjian

  10. BestCoder Round #87 LCIS(dp)

    LCIS 要用dp的思路想这题 [题目链接]LCIS [题目类型]dp &题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的,比如(x,x+1,...,y−1 ...