2013-06-13 41 views
1

我被要求將Python應用程序轉換爲Django,但我對Django完全陌生。避免Django去除文本文件上傳

我有以下問題,當我上傳必須讀取的文件文本以將其內容保存到數據庫中時,我發現Django正在剝離「額外」空格,並且必須保留這些空格。

這是我的模板

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Test</title> 
</head> 

<body> 
    {% if newdoc %} 
     <ul> 
     {% for line in newdoc %} 
      <li>{{ line }} </li> 
     {% endfor %} 
     </ul> 
    {% endif %} 

    <form action="{% url 'exam:upload' %}" method="post" enctype="multipart/form-data" content-type="text/plain"> 
     {% csrf_token %} 
      <p>{{ form.non_field_errors }}</p> 
      <p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p> 
      <p> 
        {{ form.docfile.errors }} 
        {{ form.docfile }} 
      </p> 
     <p><input type="submit" value="Upload" /></p> 
    </form> 
</body> 

這是我在views.py

def upload(request): 

    if request.method == 'POST': 
     form = DocumentForm(request.POST, request.FILES) 
     if form.is_valid(): 
      newdoc = request.FILES['docfile'] 
      form = DocumentForm() 
      return render(request, 'exam/upload.html', {'newdoc': newdoc, 'form': form}) 
    else: 
     form = DocumentForm() # A empty, unbound form 

    return render(request, 'exam/upload.html', { 
     'form': form, 
    }) 

這是我forms.py:

from django import forms 

class DocumentForm(forms.Form): 
    docfile = forms.FileField(
     label='Select a file', 
     help_text='max. 42 megabytes' 
) 

現在,當我上傳文件,它顯示了一個隨機一行:

"09000021009296401 02 b a b a b b b d b b d d a +8589 +03+6942 +03+1461 +00+5093 +00+2 +00+9237 +01+60 +01+00 +00" 

雖然它應該是這樣的:

"09000021009296401 02 b a   b a  b b b d b b  d d    a      +8589 +03+6942 +03+1461 +00+5093 +00+2  +00+9237 +01+60 +01+00 +00     " 

我必須保持額外的空間,他們將這些信息保存到數據庫中,我不能做正確如果我沒有文件所有的空格。

另外,在你問之前,它與Django的打印格式沒有關係,因爲在之前的測試中我已經嘗試將信息保存到模型中,但它與空格有相同的問題。

謝謝大家。

回答

1

更改模板如下:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Test</title> 
</head> 

<body> 
    {% if newdoc %} 
    <pre><code>{% for line in newdoc %}{{ line|safe }}{% endfor %}</code></pre> 
    {% endif %} 

    <form action="{% url 'exam:upload' %}" method="post" enctype="multipart/form-data" content-type="text/plain"> 
     {% csrf_token %} 
      <p>{{ form.non_field_errors }}</p> 
      <p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p> 
      <p> 
        {{ form.docfile.errors }} 
        {{ form.docfile }} 
      </p> 
     <p><input type="submit" value="Upload" /></p> 
    </form> 
</body>