上传图像域 Django
Upload imagefield Django
我需要帮助。
我想上传我的图片,但是有问题 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 %}
图像的 url 看起来像: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()
在 url 年代,我尝试了很多不同的方法,但没有一个成功。
我应该在 STATIC_MEDIA 和 STATIC_URL 中放什么?
以及在 url 中放入什么才能工作?
ImageField
的 upload_to
需要作为 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
请尝试
def generate_filename(self):
return 'personne/static/personne/Images/'+self.personne.nom
然后图像将按指定上传到 MEDIA_ROOT/personne/static/...。
在 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}))
我需要帮助。 我想上传我的图片,但是有问题 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 %}
图像的 url 看起来像: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()
在 url 年代,我尝试了很多不同的方法,但没有一个成功。 我应该在 STATIC_MEDIA 和 STATIC_URL 中放什么? 以及在 url 中放入什么才能工作?
ImageField
的 upload_to
需要作为 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
请尝试
def generate_filename(self):
return 'personne/static/personne/Images/'+self.personne.nom
然后图像将按指定上传到 MEDIA_ROOT/personne/static/...。
在 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}))