为什么我看不到django中的图像文件?

时间:2019-11-07 20:49:19

标签: django django-models django-views django-media

我试图加载图像文件,但是没有用。我通过管理员上传了图像文件。感谢您的帮助!

这是我的代码

urls.py

path('main/archive/<int:video_id>/', views.loadphoto, name='loadphoto'),

在views.py

def loadphoto(request, video_id):
     target_img=get_object_or_404(Record, pk=video_id)
     context={'target_img':target_img.picture}

在models.py

class Record(models.Model):
    record_text = models.CharField(max_length=50)
    pub_date = models.DateTimeField('date published')
    picture=models.ImageField(blank=True)

    def __str__(self):
        return self.record_text

在img.html

<img src="target_img">

<a href="{%url 'main'%}">Main</a>

2 个答案:

答案 0 :(得分:0)

首先,您需要将Media目录加入您的应用程序

这是您可以做到的方式:

首先,您需要在 $(function () { ///<summary> Highlights the row when selected</summary> ///<param name="editing" type="text">Editing state</param> ///<returns type="text"></returns> $('#tblCases tr').click(function () { if (isEditing) { return; } $('#tblCases tr').removeClass('selectedRow'); $(this).addClass('selectedRow'); }); }); var table = document.getElementById("tblCases"); var rIndex; for (var i = 1; i < table.rows.length; i++) { ///<summary>Display selected row data in text input.</summary> ///<param name="editing" type="text">Editing state</param> /// <returns type="text"></returns> table.rows[i].onclick = function () { if (isEditing) { return; } rIndex = this.rowIndex; console.log(rIndex); document.getElementById("txtCaseKey").value = this.cells[0].innerHTML; document.getElementById("txtDepartmentCase").value = this.cells[1].innerHTML; document.getElementById("drpDepartment").value = this.cells[3].innerHTML; document.getElementById("drpCharge").value = this.cells[5].innerHTML; document.getElementById("txtLabCase").value = this.cells[6].innerHTML; document.getElementById("txtIncidentReportDate").value = this.cells[7].innerHTML; }; } function setEditingState(editing) { ///<summary>Defines the editing state which inlcude the behavior of buttons, input fields and row selection if a certain button was clicked</summary> ///<param name="editing" type="button; text">Editing state</param> isEditing = editing; // Disable or enable fields. $('#txtDepartmentCase').attr('disabled', !editing); $('#drpDepartment').attr('disabled', !editing); $('#drpCharge').attr('disabled', !editing); $('#txtLabCase').attr('disabled', !editing); $('#txtIncidentReportDate').attr('disabled', !editing); // Disable or enable buttons. $('#btnEdit').attr('disabled', editing); $('#btnSave').attr('disabled', !editing); $('#btnCancel').attr('disabled', !editing); }

中添加它
Setting.py

然后您需要按照以下方法创建媒体网址:

然后您需要添加您的MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASEDIR,'your folder directory') #for example app/media or something

urls.py

然后,您需要将其添加到 from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('main/archive/<int:video_id>/', views.loadphoto,name='loadphoto'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Html File

您可以在此处查看更多详细信息:

https://docs.djangoproject.com/en/2.2/ref/models/fields/#django.db.models.fields.files.FieldFile.url

答案 1 :(得分:-1)

ImageField源自FileField。为了在模板中显示图像,您应该提供其网址,请参见https://docs.djangoproject.com/en/2.2/ref/models/fields/#django.db.models.fields.files.FieldFile.url

请改为按以下方式填充source属性:

<img src="target_img.url">
相关问题