2013-04-11 82 views
1

我有這個像場在我的模型django - 爲什麼這不起作用?

foto = models.ImageField(upload_to="user/%Y/%m/%d",default='') 

,並在我的設置:

MEDIA_ROOT = os.path.join(PROJECT_PATH, "media") 
MEDIA_URL = "/media/" 

,並在我的模板:

<img class="profilfoto" src="{{MEDIA_URL|escapejs}}{{user.foto.name}}" /> 

其它圖像upload_to='.'正在保存右轉入媒體文件夾,但user文件夾未被創建,這是爲什麼?

我運行syncdb和schemamigration,一切正常,但加載此圖像給出了404錯誤,因爲路徑不存在。什麼是我的錯誤?

+0

服務器是否有媒體目錄的寫權限? – 2013-04-11 09:02:26

+0

用戶目錄是否存在?它有什麼權限?您在上傳文件時是否收到錯誤或異常? – niconoe 2013-04-11 09:04:31

+0

@MattWritesCode,我在本地開發。 – doniyor 2013-04-11 09:08:05

回答

1

escapejs用於在JavaScript字符串使用

逃逸字符。這不會使字符串在HTML中安全使用,但是在使用模板生成JavaScript/JSON時可以防止出現語法錯誤。

<img class="profilfoto" src="{{MEDIA_URL|escapejs}}{{user.foto.name}}" /> 

你上面的代碼結果,例如:user/2013\u002D04\u002D10_170411/image.png,它給你的404錯誤加載此圖像。

UPDATE:

當您保存或更新的圖像,你必須定義在表單中的enctype。這將允許你保存圖像或文件:

<form id="registerform" action="/angemeldet/" method="post" 
    enctype="multipart/form-data"> 
    {% csrf_token %} 

form = YourForm(request.POST, request.FILES) 
    if form.is_valid(): 
-1

嘗試將斜線添加到您的論點的開頭在upload_to:

foto = models.ImageField(upload_to="/user/%Y/%m/%d",default='') 
+0

didnot help ::( – doniyor 2013-04-11 09:49:01

+0

這不會有幫助,它會引用根目錄 – 2013-04-11 09:57:13

+1

看看這個,也許它可以幫助:'http://agopian.info/blog/django-filefield-et-imagefield-upload_to-et-shell- python.html' – Drwhite 2013-04-11 10:20:12