2017-06-12 44 views
0

我見過類似的問題,但不能算出這個接收POST數據,我有上傳的圖片上的模型的程序:查看沒有從圖像上傳頁面

views.py:

def upload_pic(request): 
    if request.method == "POST": 
     image_form = ImageUploadForm(request.POST, request.FILES) 
     if image_form.is_valid(): 
      image_form.save() 
      return HttpResponse('success') 
    else: 
     return HttpResponse('fail') 
    return render(request, 'tracker/upload_pic.html', {"image_form": image_form}) 

模板:

{% load staticfiles %} 
<!DOCTYPE html> 
<html> 
<body> 
<form method="POST" enctype="multipart/form-data">{% csrf_token %} 
{{ image_form.img }} 
<input type="submit" value="submit" /> 
</form> 
</body> 
</html> 

urls.py:

urlpatterns = [ 
url(r'^upload_pic', views.upload_pic, name='upload_pic') 
] 

只是想保存到用戶模式,所以我可以在以後找回它,但我不能訪問任何POST數據,我也試着在HTML模板添加action = "{% url upload_pic %}"form,但我得到了NoReverseMatch錯誤

class ImageUploadForm(forms.ModelForm): 
    #model to store the information about the pictures 
    class Meta: 
     model = ExtendedProfile 
     exclude =() 
+2

請發佈圖片上傳表格也 –

+2

一個錯誤我想指出'action =「{%url upload_pic%}」'這是不正確的。這'動作=「{%URL‘upload_pic’%}」'是正確的 –

+2

此外,該視圖可以不承擔責任擺在首位顯示的形式,因爲你只是顯示爲「失敗」時,它是不是一個POST。所以你應該顯示這樣做的視圖和URL,並解釋爲什麼它們是分開的。 –

回答

2

您需要在表格上添加action所以它會檢索URL名稱。

<form action="{% url 'upload_pic' %}" method="POST" enctype="multipart/form-data">{% csrf_token %} 
    {{ image_form.img }} 
    <input type="submit" value="submit" /> 
</form> 

upload_pic忘了''

+1

完全的「良好做法尖」不同意 - 具有用於查看和URL名稱不同的名稱一定不要讓事情變得更加「可讀」,它只會增加一些無用的認知開銷。 –

+0

@brunodesthuilliers這不是我認爲的,當我知道我使用url的名稱attr時,它更容易。 – Lindow

+0

我有這個巨大的項目中,沒有一個URL名稱相匹配的視圖函數的名稱,我可以告訴你,這是一個_major_ PITA維護。無論如何:關鍵在於,無論如何,你發現它「更具可讀性」,這絕不意味着「良好實踐」,只是你自己的偏好。 –