Django-图像未上载

Django-图像未上载,django,python-3.x,Django,Python 3.x,网站上已经有一些与此相关的查询,但实际上没有一个解决了我的问题。 我有一个没有数据库的表和一个用户表,还有一个显示用户配置文件图像的图像表 Models.py class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) avatar = models.ImageField(upload_to='profile_image', null=True, bl

网站上已经有一些与此相关的查询,但实际上没有一个解决了我的问题。 我有一个没有数据库的表和一个用户表,还有一个显示用户配置文件图像的图像表

Models.py

class UserProfile(models.Model):
    user   = models.OneToOneField(User, on_delete=models.CASCADE)
    avatar = models.ImageField(upload_to='profile_image', null=True, blank=True)

    def __str__(self):
        return str(self.user.first_name)
Views.py

@login_required()
def editaFoto(request, id):
    data = {}
    foto = UserProfile.objects.get(user_id=id)
    form = UserProfileForm(request.POST or None, instance = foto) # inicia um formulario com os campos preenchidos
    data['foto'] = foto
    data['form'] = form

    if request.method == 'POST':
        if form.is_valid():
            form.save()
            return redirect('lista_perfil')
    else:
        return render(request, 'sistema/perfil/editafoto.html', data)
forms.py

class UserProfileForm(ModelForm):
    class Meta:
        model = UserProfile
        fields = '__all__'
Editafoto.html

{% extends "base.html" %}

{% load bootstrap %}

{% block title %}
    Editar Foto
{% endblock title %}

{% block main %}    
    <div class="container">
        <h3>Editar Foto</h3>
        <div class="row">
            <div class="col-sm-6">
                {{ foto }}
                <form action="{% url 'edita_foto' user.id %}" method="POST">
                    {% csrf_token %}
                    {{ form | bootstrap}}
                    <button type="submit" class="btn btn-success">Salvar</button>
                    <a href="{% url 'lista_perfil' %}" class="btn btn-danger">Cancelar</a>
                </form>
            </div>
        </div>
    </div>
{% endblock main %}
{%extends“base.html”%}
{%load bootstrap%}
{%block title%}
福托编辑
{%endblock title%}
{%block main%}
福托编辑
{{foto}}
{%csrf_令牌%}
{{form | bootstrap}}
萨尔瓦多
{%endblock main%}
Base.html

{% load static %}
<!DOCTYPE html>
<html lang="pt">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="icon" type="imagem/png" href="{% static 'img/icone.jpg' %}" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="{% static 'css/menu.css' %}">
    {% block scripts %} {% endblock scripts %}
    {% block style %} {% endblock style %}
    <title>{% block title %}  {% endblock title %}</title>
</head>
<body>
    <nav class="navbar navbar-expand-lg bg-dark navbar-dark" style="margin-bottom:20px">
        <a class="navbar-brand" href="#">Sistema</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarNav">
            <ul class="nav navbar-nav">
                <li class="nav-item active">
                    <a class="nav-link" href="{% url 'lista_consultas' %}">Consultas<span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="{% url 'lista_medicos' %}">Medicos</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="{% url 'lista_pacientes' %}">Pacientes</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="{% url 'lista_especialidades' %}">Especialidades</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="{% url 'cadastra_usuario' %}">Usuários</a>
                </li>
            </ul>
            <ul class="nav navbar-nav ml-auto">
                {% if user.userprofile.avatar == "" %}
                    <img src="{% static 'img/user-anonimo-clinica.jpg' %}" style="border-radius: 100%; margin-top: .5rem;" width="30" height="30" alt="user">
                {% else %}
                    <img src="{{ user.userprofile.avatar.url }}" style="border-radius: 100%; margin-top: .5rem;" width="30" height="30" alt="user">
                {% endif %}
                <li class="nav-item dropdown ">
                    {% if user.is_authenticated %}
                        <a class="nav-link dropdown-toggle" href="#" id="navbardrop" data-toggle="dropdown">
                            {{user}}
                        </a>
                        <div class="dropdown-menu dropdown-perfil">
                            <a class="dropdown-item" href="{% url 'lista_perfil' %}">Meu Perfil</a>
                            <a class="dropdown-item" href="{% url 'logout' %}">logout</a>
                        </div>
                    {% endif %}
                </li>
            </ul>
                <!--
                {% if user.is_authenticated %}
                    <li class="nav-item">
                        <a class="nav-link disabled" href="">Olá {{user}}</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link disabled" href="{% url 'logout' %}">logout</a>
                    </li>
                {% else %}
                    <li class="nav-item">
                        <a class="nav-link disabled" href="{% url 'login' %}">login</a>
                    </li>
                {% endif %}-->

        </div>
    </nav>

    <div style="margin-bottom: 40px">
        {% block main %}
        {% endblock %}
    </div>

    <footer class="footer " style="height:20px;width: 100%; background-color:#000; position: fixed; margin:auto; bottom:0">

    </footer>
</body>
{%load static%}
{%block scripts%}{%endblock scripts%}
{%block style%}{%endblock style%}
{%block title%}{%endblock title%}
    {%if user.userprofile.avatar==“”%} {%else%} {%endif%}
  • {%if user.u经过身份验证%} {%endif%}
{%block main%} {%endblock%}
当我使用Django admin时,我当前的代码非常有效。如果我输入Django admin并向用户添加一个映像,该映像将正常显示在系统上

但是我想将用户配置文件图像添加到我的系统中,但是当我转到editafoto.html页面并提交时,它不会将新图像保存到数据库中,不会出现错误,它只是不保存,也不会发生任何事情


有人能告诉我哪里出了问题吗?

您忘记在代码中添加
request.FILES

UserProfileForm(request.POST or None, request.FILES or None, instance=foto)
另外,请确保将
enctype=“multipart/form data”
添加到
标记中

<form action="{% url 'edita_foto' user.id %}" method="POST" enctype="multipart/form-data">

您忘记在代码中添加
请求.file

UserProfileForm(request.POST or None, request.FILES or None, instance=foto)
另外,请确保将
enctype=“multipart/form data”
添加到
标记中

<form action="{% url 'edita_foto' user.id %}" method="POST" enctype="multipart/form-data">

您是否将
enctype=“多部分/表单数据”
添加到您的
标记中?是否将
enctype=“多部分/表单数据”
添加到您的
标记中?