首页 > 其他分享 >上传的文件需进行内容验证或者直接解析的例子

上传的文件需进行内容验证或者直接解析的例子

时间:2023-07-09 17:22:05浏览次数:28  
标签:form 验证 django forms UploadForm result import 解析 上传

特点就是:

在form_valid验证中,完成数据的验证或者解析

urls.py

from django.urls import path
from .views import UploadView


urlpatterns = [
    path('', UploadView.as_view(), name='index'),
]

 

forms.py

from django import forms
from django.core.validators import FileExtensionValidator


class UploadForm(forms.Form):
    file = forms.FileField(
        validators=[FileExtensionValidator(['csv', ])])

 

views.py

import csv
import io

from django.http import HttpResponse
from django.views.generic import FormView

from .forms import UploadForm


# Create your views here.
class UploadView(FormView):
    form_class = UploadForm
    template_name = 'app/UploadForm.html'

    def form_valid(self, form):
        csvfile = io.TextIOWrapper(form.cleaned_data['file'])

        # 这里需要替换你自己的逻辑。
        reader = csv.reader(csvfile)
        count = sum(1 for row in reader)
        result = '数据总数为:{}条'.format(count)

        # 需要在页面显示结果
        return self.render_to_response(self.get_context_data(result=result))

        # 如果需要下载文件,则按以下
        # response = HttpResponse(result, content_type='text/plain')
        # response['Content-Disposition'] = 'attachment; filename = "result.txt"'
        # return response

 

UploadForm.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<div>
    <form action="{% url 'index' %}" method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        <div>
            <div>
                {{ form.file }}
                <p>{{ form.file.errors }}</p>
            </div>
        </div>
        <input type="submit" value="アップロード">
    </form>
    <pre>{{ result }}</pre>
</div>
</div>
</body>
</html>

 

标签:form,验证,django,forms,UploadForm,result,import,解析,上传
From: https://www.cnblogs.com/lxgbky/p/17539017.html

相关文章

  • 滑动验证码-移动滑块
    滑动验证码-移动滑块思路:获取滑块建立动作根据滑动的速度滑动fromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromseleniumimport......
  • python获取小红书web_session,以及解决x-s签名验证(2023-07-09)
    一、web_session请求接口:https://edith.xiaohongshu.com/api/sns/web/v1/login/activate请求类型:post提交数据:{}这儿是两个字符{},笔者最初提交None,总得不到结果,chromeF12才发现需要这两个字符。二、签名验证x-s 该请求需要x-s签名验证,签名代码如下:a1="186d30820a4......
  • 滑动验证码-编辑移动轨迹
    滑动验证码-编辑移动轨迹思路:建立每次移动的距离,使用时,移动获取距离拖动滑块儿即可。提示滑动的距离不能随意设置,需要复合人类行为。推荐参考,高中物理了解过的知识:均变速直线运动的速度与时间关系的公式:V=V0+at均变速直线运动的位移与时间关系的公式:x=v0t+½at²'''1、......
  • 【论文解析】EJOR 2011 A clustering procedure for reducing the number of represen
    论文名称:AclusteringprocedureforreducingthenumberofrepresentativesolutionsintheParetoFrontofmultiobjectiveoptimizationproblems动机假设一个三目标优化问题\[\begin{aligned}&\text{Availability:}\max_\thetaJ_1(\theta)=\max_{\theta_p,......
  • Typora 妙用+阿里云+Picgo上传--实现他人可以查看自己的博客
    Typora妙用+阿里云+Picgo上传关水水来源链接:大学生写博客,做笔记请你不要忘了Typora工具|带你从零开始认识和使用Typora_哔哩哔哩_bilibili如果还是不行可以根据此链接来排查自己的错误链接:Typora+PicGo+阿里云OSS实现图片上传_早上好我是DJ同学的博客-CSDN博客当时是无法在T......
  • m基于FPGA的图像Harris角点特征提取和图像配准verilog实现,包含testbench和MATLAB辅助
    1.算法仿真效果Quartusii18.0+ModelSim-Altera6.6d StarterEdition的测试结果如下:       MATLAB2022a测试结果如下:     2.算法涉及理论知识概要      在计算机视觉领域中,图像特征提取和图像配准是两个基本的问题。图像特征提取是指从图......
  • 滑动验证码-获取滑动长度
    滑动验证码-获取滑动长度思路:为了更快精准的找出滑动的距离,因此可以给图片做适当的处理灰度化。所谓灰度,就是图像没有色彩。举个例子,原本的彩色图片是有RGB三种颜色组成的(也就是每个像素点由三个值),现在给图像灰度化,每个像素点只有一个值(0-255)表示颜色的深度为了方......
  • 滑动验证码-保存图片
    滑动验证码-保存图片https://www.sf-express.com/we/ow/chn/sc/waybill/list#保存图片fromselenium.webdriver.chrome.serviceimportServicefromseleniumimportwebdriverfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.common.by......
  • Seata 分布式事务 XA 与 AT 全面解析
    目录XA模式是什么?什么是Seata的事务模式?AT模式是什么?为什么Seata要支持XA模式?AT与XA之间的关系总结1.XA模式是什么?首先正如煊檍兄所言,了解了什么是XA与什么是Seata定义的事务模式,便一目了然。1.1什么是XA用非常官方的话来说XA规范是X/Open组织定义的分布式事务处理(DTP,Distr......
  • 新建项目,上传到svn上。
    上传svn新项目。1、先把项目从svn上取出来,然后把本地的svn全部删除。2、把项目的名字变成自己想要的名字,还要把.project文件中的名字改成和项目一样的名字。3、把项目导入eclipse中4、然后点击team  -->> ShareProject,5、最后一步一步按提示操作。......