我在Django中顯示用戶圖像時出現問題,它似乎主要工作。當用戶提交圖片時,它將 成功存儲在正確的文件夾中。但是我保存後無法顯示圖片。使用django無法從本地服務器檢索用戶圖像
Views.py:
def upload_pic(request):
user = User.objects.get(id=request.user.id)
form = ImageUploadForm(request.POST, request.FILES)
if request.method == 'POST':
if form.is_valid():
form.save()
return render(request, 'tracker/upload_pic.html')
def album(request):
user = User.objects.get(id=request.user.id)
if request.method == "POST":
user.extendedprofile.img = request.FILES['uploaded_image']
user.extendedprofile.save()
#ExtendedProfile.objects.filter(pk=request.user.id).update(extendedprofile__img=request.FILES['uploaded_image'])
return render(request, 'tracker/album.html', {"user": user})
settings.py(相關部分)
STATIC_URL = '/static/'
STATIC_ROOT = '/viraone/tracker/static'
MEDIA_URL = '/tracker/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'tracker/')
models.py
def user_directory_path(instance, filename):
return 'user_images/user_{0}/{1}'.format(instance.user.id, filename)
class ExtendedProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
amount_spent = models.DecimalField(max_digits=6, decimal_places=2, default=0, blank=True)
img = models.ImageField(upload_to=user_directory_path)
forms.py
class ImageUploadForm(forms.ModelForm):
#model to store the information about the pictures
class Meta:
model = ExtendedProfile
exclude =()
urls.py
from django.conf.urls import url
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [url(r'^profile', views.profile, name='profile'),
url(r'^login', views.login, name='login'),
url(r'^export_info', views.export_info, name='export_info'),
url(r'^product_page', views.product_page, name='product_page'),
url(r'^(?P<object_id>[0-9]+)/$', views.product_details, name='product_details'),
url(r'^upload_pic', views.upload_pic, name='upload_pic'),
url(r'^album', views.album, name='album'),
]
if settings.DEBUG:
urlpatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
模板:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<p> {{ user.extendedprofile.img }} </p>
<img src="{{ user.extendedprofile.img.url }}"
</html>
我認爲這是一個問題與urls.py
,在調試菜單它顯示404
錯誤正確的文件路徑,但圖像並沒有出現。
你可以檢查並確保settings.DEBUG是真的。因爲其他一切看起來都很好 – Colwin
它被設置爲true,在調試菜單中,當我點擊錯誤消息時,它告訴我它無法找到的文件是「text/html」類型,如果該文件有任何內容,與它做。我也發佈了我的模板 – Amon
您是否也可以發佈該錯誤? – Colwin