django - 如何将图像存储在 Django 的视图文件中
问题描述
我正在制作一个 Django 网站,我需要在其中显示用户选择的图像。这些是我做过的事情:
图像的 Html 形式:
<form action="" method="POST">
{% csrf_token %}
<div class="form-group">
<label >Article Logo</label>
<input type="file" class="btn btn-primary" name="article_image">
</div>
<input type="submit" class="btn btn-success">
</form>
模型.py
class Content(models.Model):
article_image = models.ImageField(upload_to = 'media', null=True)
视图.py
def submit_article(request):
if request.method == 'POST':
a_image = request.FILES['article_image']
new_article.article_image = a_image
new_article.save()
我已将以下代码添加到 settings.py 以指定媒体目录:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
将以下代码添加到网站的 urls.py 中:
urlpatterns = [
path(r'admin/', admin.site.urls),
url(r'', include('logio.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
该表单无法将图像添加到媒体文件夹。如果我通过管理面板添加图像,它可以工作。
提前致谢....
解决方案
您需要添加enctype="multipart/form-data"
到表单中,如下所示:
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
有关更多信息,请查看文档。
只是一个建议,最好使用Django 表单来处理这个问题。例如,您可以有一个表格:
class ContentForm(forms.ModelForm):
class Meta:
model = Content
fields = ['article_image']
然后通过上下文将此表单传递给模板并呈现它:
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<input type="submit" value="submit'>
</form>
最后,在视图中处理验证:
def submit_article(request):
if request.method == 'POST':
form = ContentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
...
推荐阅读
- regex - 如何在记事本++中使用正则表达式转置数据
- c++ - 访问位域联合 C++ 标准中常见的初始数据未定义行为
- reactjs - 鼠标快速移动时反应js onMouseLeave不会触发
- coldfusion-11 - 亚马逊支付集成 - 网络
- firebase - 横幅广告正在展示,但插页式广告没有在测试横幅广告和测试插页式广告完美运行时
- java - 如何正确更新 Federate 的实例?
- delphi - Firemonkey 加速键
- excel - 如何使用vba selenium将数据填充到excel中每一行的HTML表格单元格中
- javascript - 如何隐藏与当前值不匹配的元素并与prop进行比较
- android - 为什么我的材料设计组件没有注册适当的颜色,如 material.io 网站上所述?