2012-04-13 104 views
1

我使用jQuery的形式插件http://jquery.malsup.com/form/#getting-started上傳圖像到Django的服務器端。沒有錯誤,但圖像未存儲在MEDIA_ROOT路徑中。過去2天我嘗試過各種技術(嘗試插件),但沒有任何工作。下面我已經提供了一切,讓你更容易。Django的jQuery的ajax圖像上傳

我的HTML代碼:

<form id="uploadform" method="post" enctype="multipart/form-data" action="background/"> 
<input type="file" name="photoimg" id="photoimg" /> 
</form> 

Javascript代碼:

https://gist.github.com/2377516

Django的Models.py:

class BackgroundModel(models.Model): 
    user = models.OneToOneField(User) 
    background = models.ImageField(upload_to='backgrounds') 

Django的views.py:

def backgroundview(request): 
     if request.is_ajax(): 
      b = request.POST.get('photoimg')   
     try: 
      g = BackgroundModel.objects.get(user=request.user) 
     except BackgroundModel.DoesNotExist: 
      bm = BackgroundModel(background=b) 
      bm.user = request.user 
      bm.save() 
     else: 
      g.background = b 
      g.save() 
     return HttpResponse("") 

Django的settings.py:

MEDIA_ROOT = '/home/nirmal/try/files/' 
MEDIA_URL = 'http://localhost:8000/files/' 

Django的urls.py:

url(r'^cover/$', login_required(direct_to_template), {'template': 'cover.html'}), 
url(r'^cover/background/$', 'cover.views.backgroundview'), 

誰能幫助我?

謝謝!

回答

2

文件在request.FILES不是request.POST。你沒有看到任何錯誤,因爲你永遠不會確認b實際上有價值,但我很驚訝你沒有看到背景錯誤不能爲空。

此外,你應該嘗試使用ModelForm。它會包含很多你不得不編碼的行爲。

+0

非常感謝。但是爲什麼我錯誤爲Background = null – rnk 2012-04-13 16:50:39

+0

'request.POST.get('photoimg')爲您的代碼返回None。 – John 2012-04-13 17:01:13

+0

你能幫我嗎? http://stackoverflow.com/questions/10150301/django-model-has-no-attribute-committed – rnk 2012-04-14 02:04:40