Django 使用 UpdateView 上传文件

2023-11-26

我尝试了通用视图的简约 django 实现来上传个人资料图片。

views.py

class UpdateProfile(UpdateView):
    form_class = UpdateUserProfileForm
    model = UserProfile
    success_url = reverse_lazy('show_profile')

模型.py

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    website = models.URLField(blank=True)
    picture = models.ImageField(upload_to='user/img/%Y-%m-%d/', blank=True)

forms.py

class UpdateUserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ['website','picture']

用户个人资料_表单.html

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

一切正常。现在出现错误消息。网站字段将正确更新,并且搜索按钮允许选择要上传的文件。然而,该文件永远不会出现在系统中,并且数据库字段仍为空。

不幸的是,关于文件上传的 django 文档(https://docs.djangoproject.com/en/1.10/topics/http/file-uploads/)不包括通用视图,所以我想知道这是否可能。

Update:感谢 Alasdair 的回答,我更新了我的模板,因此它现在可以作为带有通用视图的图片上传的简约原型正常工作。

要显示图片,请参阅文档说明(https://docs.djangoproject.com/en/1.10/howto/static-files/)再次非常有帮助。

此外,还需要媒体设置才能将文件上传到媒体文件夹。

设置.py

MEDIA_URL = '/media/'
MEDIA_ROOT = 'absolute-path-to/media'

urls.py

from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

template

{% if userprofile.picture.url|length > 0 %}
    <img src="{{ userprofile.picture.url }}" width="200px">
{% else %}
    <img src="{% static "/img/default_profile.jpg" %}" width="200px" />
{% endif %}

问题出在你的模板上。你还没有设置enctype, so request.FILES将永远是空的。它应该是:

<form action="" enctype="multipart/form-data" method="post">{% csrf_token %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 使用 UpdateView 上传文件 的相关文章

随机推荐

  • 自定义 MSBuild 任务:如何在任务仍在运行时刷新 VS2012 输出窗口中的日志记录?

    我有一个自定义 MSBuild 任务 需要一些时间才能完成 它使用以下任一方式输出进度Log LogMessage or BuildEngine LogMessageEvent 都尝试过 我的问题是 在任务完成之前 所有输出都不会出现在 V
  • Android 检查应用内购买是否之前购买过

    我想在我的 Android 应用程序中进行应用程序内购买 我为此使用谷歌示例 http developer android com training in app billing preparing iab app html GetSamp
  • setColorFilter() 在 Android 4 上损坏,在 Android 5 上工作

    我试图定期 每秒几次 在屏幕上闪烁不同的颜色 要改变颜色 我使用Drawable setColorFilter int color Mode mode 我的主要观点的背景 myView getBackground setColorFilte
  • 如何在反应本机中将徽章添加到标签栏?

    我正在使用 tabnavigator createbottomBottomTabNavigator 并需要使用 redux 进行包计数方面的帮助 您始终可以创建自定义组件 在本例中为选项卡项
  • 运行 npm install 时 JSON 输入意外结束

    Closed 这个问题需要调试细节 目前不接受答案 安装时eslint像这样的 npm 包 npm i eslint g 我收到以下错误 npm 错误 解析 coveralls 2 11 4 附近时 JSON 输入意外结束 我怎样才能解决这
  • eval javascript 代码时出现 WatiN 权限问题

    我的环境是 Windows XP IE8 VS2008 WetiN 2 0 20 当我尝试执行以下代码时 IE browser new IE browser GoTo url browser Eval alert hello 我收到以下错误
  • 如何更改 UISearchbar 取消按钮的文本颜色

    我有一个 UISearchBar 如下所示 如何更改取消按钮的文本颜色 这个问题是不久前提出的 因此我认为提出问题的人已经找到了解决方案 但以防万一其他人碰巧遇到同样的问题 这是我的解决方案 我有一个带有取消按钮的 UISearchBar
  • 如何使用多重处理来删除非常大的列表中的重复项?

    假设我有一个包含随机数的巨大列表 L random randrange 0 25000000000 for in range 1000000000 我需要删除此列表中的重复项 我为包含较少数量元素的列表编写了这段代码 def remove
  • 如何防止自定义控件中的工具提示闪烁?

    我制作了一个自定义控件 当满足条件时 我想显示一个工具提示 protected override void OnMouseMove MouseEventArgs e base OnMouseMove e var plannedItem Ge
  • 需要 Redis/NoSQL 概念化方面的帮助

    我认为我很好地掌握了使用 Redis 的所有命令 但我很难找出使用它的最佳方法 我正在设计一个客户通知系统 当任何电路出现警报时 该系统将通过他们的首选方法 电子邮件 SNMP 系统日志 通知他们 因此 我得到了设备名称和端口 我需要将其与
  • Qt:按键事件[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是 Qt 的初学者 正在实现 keypressevent 我想以这样的方式处理按键 如
  • 使用 epplus 创建 Excel 图表

    这就是我所拥有的 我有一个包含两列的 Excel 工作表 第 1 列包含图例的描述 例如类别 1 类别 2 等 第 2 列包含总计数的数字 例如 6 4 18 等 Category Count Category1 6 Category2 4
  • 从 Java 在 SQL Server 中插入多行[重复]

    这个问题在这里已经有答案了 我需要从 Java 代码将多行插入 SQL Server 数据库 一次 100 行 我怎样才能做到这一点 目前我正在一项一项地插入 这看起来效率不高 您可以使用PreparedStatement addBatch
  • 有没有好的方法来为 swig 接口生成文档?

    我想知道是否有任何好的构建 维护技术 接口上的文档 我正在使用 swig 构建从 c 代码到 python 的接口 大多数时候我只是 包括 c 头文件 我正在处理至少几十个课程 和数百个功能 因此自动化工具是首选 理想情况下 我想在 c 标
  • git:将某些文件的历史记录拆分到单独的分支中

    假设我不久前引入了 现在注意到它不应该是我的一部分main而是一个分支feature 是否可以使用例如git filter branch自动将 的所有历史记录移出我的main分支进入feature branch 听起来你正在做一些相当疯狂的
  • 具有引用参数或匿名函数的 Func / Action 委托

    我只是想知道 确切的语法是如何的ref and out委托和内联 lambda 函数的参数 这是一个例子 如果函数定义为 public void DoSomething int withValue 函数中的委托可以通过以下方式创建 publ
  • 管理员如何访问特定域中所有用户的 Google 云端硬盘内容?

    我正在开发一种工具 可以使用管理员运行的 Admin SDK 自动将 Google Drive 文档的所有权从一个用户转移到另一个用户 我使用数据传输 API 进行所有权转移 我想通过检查传输前后 Google Drive 文档的大小 数量
  • Perl的&&的结果是什么?

    当我尝试这个时 a 1 b 2 print a b n 结果是2 为什么呢 Quote perlop 和 运算符 返回最后评估的值 与 C 的 和 不同 返回 0 或 1 所结果的2Perl 认为是 true 因此当您使用 运算符在逻辑条件
  • 有人可以帮助我使用 RDF/OWL 可视化工具吗?

    我尝试在互联网上搜索 但找不到合适的工具 所以如果有人可以为我提供一个可以解析和显示 RDF 和 OWL 本体图的工具的链接 SemWeb图形表示法 W3C 维护的图形符号和软件应用程序列表 已过时 RDF可视化在 Ontotext 研究空
  • Django 使用 UpdateView 上传文件

    我尝试了通用视图的简约 django 实现来上传个人资料图片 views py class UpdateProfile UpdateView form class UpdateUserProfileForm model UserProfil