来自django教程的通用视图UpdateView不保存文件或图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自django教程的通用视图UpdateView不保存文件或图像相关的知识,希望对你有一定的参考价值。

UpdateView不会在任何地方保存文件或图像,可能是什么问题?

设置:

MEDIA_ROOT=""

article_form.html

<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>

views.朋友:

from django.views.generic.edit import UpdateView
class updatingexample(UpdateView):
    model = Article
    fields = ['file1','file2','photo']

URL.朋友

app_name = 'polls'
urlpatterns=[
path('<int:pk>/upd/', updatingexample.as_view(),name="ugh")
]

楷模:

class Article(models.Model):
    title = models.CharField(max_length=200)
    pub_date = models.DateField()
    file1 = models.FileField(upload_to='uploads/',blank=True)
    file2 = models.FileField(upload_to='uploads/%Y/%m/%d/',blank=True)
    photo = models.ImageField(upload_to='uploads',blank=True)
    def get_absolute_url(self):
        return reverse('polls:ugh', kwargs={'pk': self.pk})#back to itself
答案

只需在表单上添加即可

enctype="multipart/form-data"

所以它会像:

<form method="post" enctype="multipart/form-data">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>

我还建议在settings.py中设置MEDIA_ROOT和MEDIA_URL

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

并在urls.py的末尾添加它

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

以上是关于来自django教程的通用视图UpdateView不保存文件或图像的主要内容,如果未能解决你的问题,请参考以下文章

进阶剖析django通用类UpdateView(2张图)

Django通用类视图实现忘记密码重置密码功能

基于 Django 类的视图 - 具有两个模型表单的 UpdateView - 一个提交

我可以同时使用 UpdateView 和 DeleteView 制作视图吗?

使用占位符和错误验证为 CreateView 和 UpdateView 制作自定义模板

使用基于类的 UpdateView 在 Django 中更新用户模型