zoukankan      html  css  js  c++  java
  • 使用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='0' bordercolor="#FFFFFF" width='98%' cellpadding='0' cellspacing='0' align='center' bgcolor=''>
      <tbody>
      <tr style="vertical-align:middle" >
                <td style=" 45%;" >   {{form.stype.label}}        </td>
                <td style=" 50%;" >    {{form.stype}}           </td>
       </tr>
       <tr style="vertical-align:middle" 
                <td style=" 20%" >    {{form.batchfile.label}}         </td>
                <td style=" 30%" >    {{form.batchfile}}               </td>
            <button style="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()
           ……

    这样就完成了表单的建模、视图构成和数据处理

  • 相关阅读:
    容器占用空间的小问题
    一个ipv4到ipv6的移植问题
    一个linux内核模块移植到低版本时发生的异常
    一个发包乱序问题记录
    一个docker镜像中的目录删除不了问题
    C/C++(共用体与枚举)
    C/C++(数据结构栈的实现)
    C/C++(结构体)
    C/C++(内存管理)
    C/C++(指针数组)
  • 原文地址:https://www.cnblogs.com/hans-201506/p/4865083.html
Copyright © 2011-2022 走看看