如何上传和显示图像 django 2?

How to upload and display image django 2?

我尝试对路径进行硬编码,但没有任何效果。我的代码有什么问题?我收到 404 错误并且没有显示图像。

settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static/')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'blog/media')

models.py

image = models.ImageField(upload_to = 'media/', blank = True)

urls.py

urlpatterns = [...] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

forms.py class 邮政表格(forms.ModelForm):

    class Meta:

        model = Post
        fields = ('author','title', 'text','image')

        widgets = {
            'title': forms.TextInput(attrs={'class': 'textinputclass'}),
            'text': forms.Textarea(attrs={'class': 'editable medium-editor-textarea postcontent'}),
        }

html

        <img src="{{post.image.url}}">
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

根据我的理解,您正在尝试让 django 以此来提供静态文件,static-files 和媒体是分开的,您拥有的那条线提供诸如 css、js 等驻留在STATIC_ROOT 而你需要服务 MEDIA_ROOT 所以

static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

添加这部分应该可行,但我强烈反对在实际部署中使用它,媒体文件应该由像 nginx 这样的网络服务器处理,而不是应用程序服务器。