簡體   English   中英

如何使用django將文件上傳到服務器?

[英]How to upload file to server with django?

我為我的問題找到了這個非常簡單的代碼,但我試圖在我的項目中重復它,但沒有結果。 我認為我做的一切都是正確的,但結果很糟糕。

我這樣做:

表格.py

class UploadFileForm(forms.Form):
    docfile = forms.FileField(
        label='select file pls'
    )

視圖.py

class CabinetView(TemplateView, UploadFileForm):
    template_name = 'cabinet.html'

def get_context_data(self, **kwargs):
    if not self.request.user.is_authenticated() or self.request.user.is_anonymous():
        raise ValueError('You are not log in. Please do it.')
    context = super(CabinetView, self).get_context_data(**kwargs)
    if self.request.user.first_name:
        context['current_user'] = self.request.user.first_name
    else:
        context['current_user'] = self.request.user

    return context

def post(self, request):
    if self.request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            my_file = self.request.FILES['docfile']
            print my_file.name
        else:
            print 'invalid'
    return render(self.request, 'cabinet.html', {'form': form})

html模板:

<body>
<form method="post">{% csrf_token %}
    {{ form }}
    <p><input type="submit" value="Upload"/></p>
</form>
</body>

我正在等待上傳文件,但是當我嘗試上傳文件時(我有按鈕“瀏覽...”,我在選擇文件后嘗試推送它)終端說:

POST /cabinet/ HTTP/1.1 200 5740

form: <tr><th><label for="id_docfile">select file pls:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input id="id_docfile" name="docfile" type="file" /></td></tr>

invalid

因此,表單無效。 我不明白為什么。

對不起,很簡單的問題。 如果我的問題有任何問題,我很抱歉。 這是我在 stackoverflow 上的第一個問題。

我的設置是:Python 2.7 Django 1.9.7 Ubuntu 14.04

代替

my_file = self.request.FILES['file']

my_file = self.request.FILES['docfile']

在你的 views.py 中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM