我需要帮助。 我想上传我的图片,但问题是A screenshot of what I get 我动态上传了我的图片, 在我的模型中:
....
class Visage(models.Model):
personne = models.ForeignKey(Personne)
def generate_filename(self, filename):
return "personne/static/personne/Images/%s/%s"% (self.personne.nom,filename)
image = models.ImageField(blank=False, upload_to=generate_filename)
...
在模板中我有:
{% for image in visages_liste %}
<a href="{{image.image.url }}"> <img src="{{image.image.url}}" height="420"></a>
{% endfor %}
图片的网址如下:localhost:8000 / personne / static / personne / Images / NameOfThePerson / NameOfTheImage.jpg
观点:
class IndexView (generic.ListView):
template_name = 'personne/accueil.html'
context_object_name = 'visages_liste'
def get_queryset(self):
return Visage.objects.all()
在网址中,我尝试了很多不同的事情,但没有人工作。 我应该在STATIC_MEDIA和STATIC_URL中添加什么? 以及在网址上放什么工作?
答案 0 :(得分:1)
upload_to
的{{1}}需要是ImageField
之后的子根。
而不是
settings.MEDIA_ROOT
请尝试
ImageField(blank=False, upload_to=os.path.join(MEDIA_ROOT, 'personee'))
然后图像将保存在ImageField(blank=False, upload_to='personne')
。
修改强> 使用您的模型设置
而不是
MEDIA_ROOT/personne
请尝试
def generate_filename(self, filename):
return os.path.abspath(os.path.join(MEDIA_ROOT, 'personne/static/personne/Images/'))+'/' + self.personne.nom+'/'+ filename
然后图像将按照指定上传到MEDIA_ROOT / personne / static / ....
答案 1 :(得分:0)
在settings.py
中,尝试将MEDIA_ROOT
设置为:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
在您的项目的urls.py
文件中添加:
from django.conf import settings
from django.conf.urls import patterns
# Add this to the end of the urls.py file, after your other urls
if settings.DEBUG:
urlpatterns += patterns('', (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}))