简体   繁体   English

如何在Django中从表单或上传的输入文件获取输入?

[英]How to get input either from a form or as uploaded input file in Django?

I have written a view which takes input either from a form where you can post your data directly or you can upload a ".csv" file like this given below: 我已经编写了一个视图,该视图从表单中输入数据,您可以在其中直接发布数据,也可以上传“ .csv”文件,如下所示:

views.py views.py

def Some_view(request):

    if request.method == 'POST':
        form = My_form(request.POST)


    else:
        request.method == 'POST' and request.FILES['myfile']
        myfile = request.FILES['myfile']
        fs = FileSystemStorage()
        filename = fs.save(myfile.name, myfile)
        uploaded_file_url = fs.url(filename)
        return render(request, 'myapp/des.html')

    return render(request, 'myapp/des.html', {'form': form})

html template: des.html is like this: html模板:des.html如下所示:

{% extends 'protocol/base.html' %}
{% load staticfiles %}

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    </head>


{% block content %}


    <body>
        <div class="container">

            <div style="width:30%">
                <form action="/result_view/" method="post">
                    {%csrf_token%}
                    {% for error in form.non_field_errors %}
                    <div class="form-group has-errors text-danger small">
                        {{error}}
                    </div>
                    {% endfor %}
                    {% for field in form %}
                    <div class="form-group has-errors text-danger small">
                        {{field.errors}}
                    </div>
                    <div class="form-group has-errors text-danger small">
                    </div>
                    {% endfor %}

                    <div class="form-group">
                         {{form.AA}}
                    </div>

                    <div class="form-group">
                        <button class="btn btn-primary" style="width:100%; margin-bottom: 30px ">Submit</button>
                    </div>

                     <h2> or <h2>
<style type="text/css">



.button {
    background-color:  #ff9800; /* Green */
    border: none;
    color: black;
    padding: 10px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;

    margin-top: 10px;
    margin-bottom: 30px;
}

</style>

 <form method="post" enctype="multipart/form-data">
 <div class="heading">
</h4>
 </div>
    {% csrf_token %}
    <input class="input" type="file" name="myfile">
    <button class="button" type="submit">Upload</button>
  </form>

  {% if uploaded_file_url %}
    <p class="text" >File uploaded successfully. </p>
  {% endif %}

            </div>
            </form>
        </div>
    </body>
</html>
   {% endblock %}

forms.py 表格

from django import forms

class My_form(forms.Form):

    AA = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control','placeholder':'Ex.: ARNDCEQGHILKMFPSTWYV'}))


class Meta:
    fields = ['AA']

The form is working fine but in my case upload method is not working, when I use to upload file method alone if works fine but with form method, it is not working please help me out in this regards thanks. 表单工作正常,但在我的情况下,上传方法不起作用,如果我单独上载文件方法(如果工作正常但与表单方法一起使用),则无法正常工作,请在这方面帮助我。

i think you need to change if condition sequence: 我认为如果条件序列需要更改:

if request.method == 'POST' and request.FILES.get('myfile'):
    # You code here

elif request.method == 'POST':

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM