Home > Blockchain >  Populate Django pdf after submition from user input
Populate Django pdf after submition from user input

Time:10-26

I've done the HTML as well as the pdf blank file for my web framework, but when it comes to the submission POST, I cannot seem to get it to work. Its supposed that once you press the submit it will save the user input to the blank pdf created, to later through a button (which is already created and functional, but downloads blank) download a pdf with the users inputed data. PDF should have the input data

Home1.html

{% extends "users/base.html" %} {% block title%} Home2 {%endblock title%}

{%block Formulario%}

<form id="form" method='post'>
    {%csrf_token%}
    <div >
      <label for="fecha" id="label-fecha"> Fecha </label>
      <input type="date" id="date" placeholder="Ingrese fecha" />
    </div>
    <div >
      <label for="Cargo Actual" id="label-Cargo Actual"
        >Su cargo actual</label
      >
      <input type="text" id="cargo" placeholder="Ingrese Cargo" />
    </div>
    <div >
      <label for="Lugar y Fecha de Nacimiento" id="label-F/L nac"
        >Lugar y fecha de Nacimiento</label
      >
      <input type="text" id="FLNac" />
    </div>
    <div >
      <label for="Discapacidad" id="label-Disc">Grado de discapacidad</label>
      <input type"text" id='discapacidad' placeholder='En caso de tener
      discapacidad ingrese el grado,caso contrario deje vacio '>
    </div>
    <div >
      <label for="edad" id="label-edad"> Edad: </label>
      <input type="text" id="edad" placeholder="Ingrese edad" />
    </div>
    <div >
      <label for="tipo_sangre" id="label-tipo_sangre">Tipo de Sangre:</label>
      <input type
       ="text"
        id="tipo_sangre"
        placeholder="Ingrese tipo de sangre"
      />
    </div>
    <div >
      <label for="Estatura" id="label-Estatura"> Estatura: </label>
      <input
        type="number"
        id="Estatura"
        placeholder="Ingrese su estatura"
        step=".01"
      />
    </div>
    <div >
      <label for="Direccion_Domicilio" id="label-Direccion"
        >Direccion Domicilio Actual</label
      >
      <input type="text" id="Domicilio" placeholder="Ingrese su Direccion" />
    </div>
    <div >
      <label for="Manzana" id="label-Manzana"> Manzana: </label>
      <input type="text" id="Manzana" placeholder="Ingrese Manzana" />
    </div>
    <div >
      <label for="Villa" id="label-Villa"> Villa: </label>
      <input type="text" id="villa" placeholder="Ingrese villa" />
    </div>
    <div >
      <label for="Parroquia" id="label-Parroquia"> Parroquia </label>
      <input type"text" id='Parroquia' placeholder="Ingrese Parroquia">
    </div>
    <div >
      <label for="telefonoD" id="label-telefonoD"> Telefono Domicilio </label>
      <input
        type="text"
        id="tel_domicilio"
        placeholder="Ingrese telefono domicilio"
      />
    </div>
    <div >
      <label for="telefonoC" id="label-telefonoC"> Telefono Celular </label>
      <input
        type="text"
        id="tel_personal"
        placeholder="Ingrese telefono celular"
      />
    </div>
    <div >
      <label for="telefonoF" id="label-telefonoF">Telefono Familiar </label>
      <input
        type="text"
        id="tel_familiar"
        placeholder="Ingrese telefono familiar"
      />
    </div>
    <div >
      <label for="Cedula" id="label-cedula"> Cedula de Identidad: </label>
      <input type="number" id ="cedula" placeholder="Ingrese su cedula">
    </div>
    <div >
      <label for="Estado_Civil" id="label-Estado_Civil">
        Cual es su Estado Civil actual
      </label>
      <select name="Estado_Civil" id="Estado_Civil">
        <option value="Soltero(a)">Soltero</option>
        <option value="Union_Libre">Union Libre</option>
        <option value="Casado">Casado</option>
        <option value="Viudo">Viudo</option>
        <option value="Divorciado">Divorciado</option>
      </select>
    </div>

    <h2> Informacion del Conyuge o Esposo </h2>
    <small> En el caso de no tener Conyuge o Esposo/a dejar vacio <small>
      <div >
          <label for='NCE' id="label-NCE"> Nombre Completo del conyuge o Esposo/a</label>
          <input type='text' id='NCE' placeholder="Ingrese el nombre respectivo">
      </div>
      <div class='form-control'>
          <label for='Direccion_DomicilioNCE' id="label-Direccion_DomicilioNCE"> Direccion Domiciliaria: </label>
          <input type="text" id='DDNCE' placeholder="Ingrese Direccion Domiciliaria">
      </div>
      <div class ='form-control'>
          <label for='Num_C/E ' id='label-NumC/E'> Telefono:</label>
          <input type="number" id="Num_C/E" placeholder="Ingrese telefono">
      </div>
      <div >
          <label for='ced_C/E' id="label-ced_C/E"> Cedula de Identidad:</label>
          <input type="number" id="ced_C/E" placeholder="Ingrese Cedula">
      </div>
      <div class='form-control'>
          <label for="Fecha_NacC/E" id="label-NacC/E"> Fecha de Nacimiento: </label>
          <input type="date" id="Fecha_NacC/E" placeholder="Ingrese fecha de Nacimiento">
      </div>
      <div class='form-control'>
          <label for="Lug_TrabajoC/E" id="label-Lug_TrabajoC/E"> Lugar y Direccion de Trabajo: </label>
          <input type="text" id="Lug_TrabajoC/E" placeholder="Ingrese Lugar y Direccion del trabajo">
      </div>
      <div >
          <label for="tel_trabajoC/E" id="label-tel_trabajoC/E"> Telefono del Trabajo </label>
          <input type="text" id="tel_trabajoC/E" placeholder='Ingrese telefono'>
      </div>
      <h2>Informacion de los Hijos</h2>
          <font size='-0'> En caso de no tener hijos dejar vacio </font>
              <h4> Hijo 1: </h4>
              <div class='form-control'>
                  <label for='kid1' id='label-kid1'> Nombre hijo/a: </label>
                  <input type='text' id='kid1' placeholder="Nombre del hijo">
              </div>
              <div class='form-control'>
                  <label for='F/LK1' id='label-F/LK1'> Fecha y Lugar de nacimiento: </label>
                  <input type='text' id='K1FL' placeholder="Nombre del hijo">
              </div>
              <div class= "form-control">
                  <label for="Edadk1" id='label-Edadk1'> Edad: </label >
                  <input type='text' id="AgeK1" placeholder='Ingrese edad'>
              </div>
              <div class='form-control'>
                  <label for='Ced/Ciud' id='label-Ced/Ciud'> Cedula/Ciudadania: </label>
                  <input type='text' id= 'Ced/CiudK1' placeholder='Ingrese Cedula'>
              </div>
              <div class='form-control'>
                  <label for="Direccion" id="label-Direccion_Hijos"> Direccion Domiciliaria </label>
                  <input type='text' id='direccionHijo1'placeholder='Ingrese Direccion'>
              </div>
              <h4> Hijo 2: </h4>
              <div class='form-control'>
                  <label for='kid2' id='label-kid2'> Nombre hijo/a: </label>
                  <input type='text' id='kid2' placeholder="Nombre del hijo">
              </div>
              <div class='form-control'>
                  <label for='F/LK2' id='label-F/LK2'> Fecha y Lugar de nacimiento: </label>
                  <input type='text' id='K2FL' placeholder="Nombre del hijo">
              </div>
              <div class= "form-control">
                  <label for="Edadk2" id='label-Edadk2'> Edad: </label >
                  <input type='text' id="AgeK2" placeholder='Ingrese edad'>
              </div>
              <div class='form-control'>
                  <label for='Ced/Ciud' id='label-Ced/Ciud'> Cedula/Ciudadania: </label>
                  <input type='text' id= 'Ced/CiudK2' placeholder='Ingrese Cedula'>
              </div>
              <div class='form-control'>
                  <label for="Direccion" id="label-Direccion_Hijos"> Direccion Domiciliaria </label>
                  <input type='text' id='direccionHijo2'placeholder='Ingrese Direccion'>
              </div>
              <h4> Hijo 3: </h4>
              <div class='form-control'>
                  <label for='kid3' id='label-kid3'> Nombre hijo/a: </label>
                  <input type='text' id='kid3' placeholder="Nombre del hijo">
              </div>
              <div class='form-control'>
                  <label for='F/LK3' id='label-F/LK3'> Fecha y Lugar de nacimiento: </label>
                  <input type='text' id='K3FL' placeholder="Nombre del hijo">
              </div>
              <div class= "form-control">
                  <label for="Edadk3" id='label-Edadk3'> Edad: </label >
                  <input type='text' id="AgeK3" placeholder='Ingrese edad'>
              </div>
              <div class='form-control'>
                  <label for='Ced/Ciud' id='label-Ced/Ciud'> Cedula/Ciudadania: </label>
                  <input type='text' id= 'Ced/CiudK3' placeholder='Ingrese Cedula'>
              </div>
              <div class='form-control'>
                  <label for="Direccion" id="label-Direccion_Hijos"> Direccion Domiciliaria </label>
                  <input type='text' id='direccionHijo3'placeholder='Ingrese Direccion'>
              </div>
              <h4> Hijo 4: </h4>
              <div class='form-control'>
                  <label for='kid4' id='label-kid4'> Nombre hijo/a: </label>
                  <input type='text' id='kid4' placeholder="Nombre del hijo">
              </div>
              <div class='form-control'>
                  <label for='F/LK4' id='label-F/LK4'> Fecha y Lugar de nacimiento: </label>
                  <input type='text' id='K4FL' placeholder="Nombre del hijo">
              </div>
              <div class= "form-control">
                  <label for="Edadk4" id='label-Edadk4'> Edad: </label >
                  <input type='text' id="AgeK4" placeholder='Ingrese edad'>
              </div>
              <div class='form-control'>
                  <label for='Ced/Ciud' id='label-Ced/Ciud'> Cedula/Ciudadania: </label>
                  <input type='text' id= 'Ced/CiudK4' placeholder='Ingrese Cedula'>
              </div>
              <div class='form-control'>
                  <label for="Direccion" id="label-Direccion_Hijos"> Direccion Domiciliaria </label>
                  <input type='text' id='direccionHijo4'placeholder='Ingrese Direccion'>
              </div>
          <h2> Familiares con Discapacidad </h2>
          <div class='form-control'>
              <label for='inp-1'>
                  <input type='checkbox' name='inp'> Tiene esposo/a con discapacidad </input></label>
              <label for='inp-2'>
                  <input type="checkbox" name='inp'> Tiene hijos/as con discapacidad </input></label>
          </div>

          <h2>Informacion de Familiares </h2>
              <font size='-0'>  "Padres y hermanos" </font> 
              <div  class='form-control'>
                  <label for="ApellidosNom"  id="label-ApellidosNom"> Apellidos Y Nombres </label>
                  <input type="text" id="AyNFam" placeholder="Ingrese Nombres">

                  <input type="text" id="AyNFam2" placeholder="Ingrese Nombres">
                  
                  <input type="text" id="AyNFam3" placeholder="Ingrese Nombres">
              </div>
              <div  class='form-control'>
                  <label for="telefonoFam"  id="label-telefonoFam"> Telefono </label>
                  <input type="text" id="telefonoFam" placeholder="Ingrese Telefono">
                  <input type="text" id="telefonoFam" placeholder="Ingrese Telefono">
                  <input type="text" id="telefonoFam" placeholder="Ingrese Telefono">
              </div>
              <div  class='form-control'>
                  <label for="FNFam"  id="label-FNFam"> Fecha de Nacimiento </label>
                  <input type="text" id="FNFam" placeholder="Ingrese fecha de Nacimiento">
                  <input type="text" id="FNFam" placeholder="Ingrese fecha de Nacimiento">
                  <input type="text" id="FNFam" placeholder="Ingrese fecha de Nacimiento">
              </div>
              <div  class='form-control'>
                  <label for="RelacionFam"  id="label-RelacionFam"> Relacion de Parentesco </label>
                  <input type="text" id="RelacionFam" placeholder="Ingrese Relacion">
                  <input type="text" id="RelacionFam" placeholder="Ingrese Relacion">
                  <input type="text" id="RelacionFam" placeholder="Ingrese Relacion">
              </div>
              <div  class='form-control'>
                  <label for="DireccionFam"  id="label-DireccionFam"> Direccion Domiciliaria</label>
                  <input type="text" id="DireccionFam" placeholder="Ingrese Direccion">
                  <input type="text" id="DireccionFam" placeholder="Ingrese Direccion">
                  <input type="text" id="DireccionFam" placeholder="Ingrese Direccion">
              </div>
              <div >
                  <label for="inp-3"> Trabajan en esta empresa familiares?
                      <input type="checkbox" name="inp">Si </input>
                      <input type="checkbox" name="inp">No </input>
                  </label>
              </div>
              <div >
                  <label for="inp-3"> Trabajan en esta empresa amistades?
                      <input type="checkbox" name="inp">Si </input>
                      <input type="checkbox" name="inp">No </input>
                  </label>
              </div>
      <h2> Referencias Personales  </h2>
      <font size='-0'> Dos diferentes a Familiares </font>
      <div >
          <label for='Ap_NomRP' id="label-Ap_NomRP"> Nombres y Apellidos</label>
          <input type='text' id='Ap_NomRP' placeholder="Ingrese el nombre ">
          <input type='text' id="Ap_NomRP2" placeholder="Ingrese el nombre">
      </div>
      <div class='form-control'>
          <label for='Direccion_DomicilioRP' id="label-Direccion_DomicilioRp"> Direccion Domiciliaria: </label>
          <input type="text" id='DDRP' placeholder="Ingrese Direccion Domiciliaria">
          <input type="text" id='DDRP2' placeholder="Ingrese Direccion Domiciliaria">
      </div>
      <div class ='form-control'>
          <label for='Num_RP ' id='label-NumRP'> Telefono:</label>
          <input type="number" id="Num_RP" placeholder="Ingrese telefono">
          <input type="number" id="Num_RP2" placeholder="Ingrese telefono">
      </div>
      <div class='form-control'>
          <label for='OcupacionRP' id='label-OcupacionRP'> Ocupacion </label>
          <input type='text' id="OcupacionRP1" placeholder="Ingrese Ocupacion">
          <input type='text' id="OcupacionRP2" placeholder="Ingrese Ocupacion">
      </div>
      <h2> Experiencia Laboral</h2> 
      <font size='-0'> Si tiene menos de tres años en la empresa </font> 
      <div class='form-control'>
          <label for="nombreEmpresa" id="label-nombreEmpresa"> Nombre de la Empresa </label>
          <input type='text' id='NombreEmp' placeholder='Ingrese nombre de la empresa'>
      </div>
      <div class='form-control'>
          <label for='DireccionEmp' id="label-DireccionEmp"> Direccion </label>
          <input type="text" id='DireccionEmp' placeholder="Ingrese Direccion">
      </div>
      <div class='form-control'>
          <label for="telefonoEmp" id='label-telefonoEmp'> telefono </label>
          <input type='number' id="telefonoEmp" placeholder="Ingrese telefono">
      </div>
      <div >
          <label for='fechaIng' id='label-fechaIng'> Fecha Ingreso: </label>
          <input type='date' id='fechaIng'>
      </div>
      <div class='form-control'>
          <label for="fechaSal" id="label-FechaSal"> Fecha Salida: </label>
          <input type="date" id ='fechaSal'>
      </div>
      <div class='form-control'>
          <label for="SueldoF" id="label-SueldoFin"> Sueldo Final   </label>
          <input type="text" id="SueldoFin" placeholder="Ingrese sueldo">
      </div>
      <div >
          <label for="UltCargo" id="label-UltCargo"> Ultimo Cargo que desempeno</label>
          <input type="text" id="UltCargo" placeholder="Ingrese su ultimo cargo">
      </div>
      <div >
          <label for="TiempoServ" id="label-TiempoSev"> Tiempo de Servicio </label>
          <input type="text" id="TiempoServ" placeholder="Ingrese el tiempo que estuvo en la empresa">
      </div>
      <div >
          <label for="JefeInm" id="label-JefeInm"> Nombre de su Jefe Inmediato</label>
          <input type="text" id="JefeInm" placeholder="Ingrese el nombre de su jefe">
      </div>
      <div >
          <label for="NombreEmpr"id="label-nombreEmpr"> Nombre de la Empresa</label>
          <input type="text" id="NombreEmpr" placeholder="Ingrese el nombre de la Empresa">
      </div>
      <div >
          <label for="DireccionEmp" id="label-DirEmpr"> Direccion: </label>
          <input type="text" id="DireccionEmpr" placeholder="Ingrese direccion">
      </div>
      <h2> Referencias Socioeconomicas </h2>
      <div >
          <label for="inp-4"> Posee Vehiculo <small> Moto o Automovil </small> </label>
              <input type="checkbox" name="inp"> Si </input>
              <input type="checkbox" name="inp"> No </input>
      </div>
      <div >
          <label for="ModeloV" id="label-Modelo"> Modelo </label>
          <input type="text" id="ModeloV" placeholder="Ingrese Modelo">
      </div>
      <div >
          <label for="MarcaV" id="label-MarcaV"> Marca </label>
          <input type="text" id="MarcaV" placeholder="Ingrese Marca">
      </div>
      <div >
          <label for="PlacaV" id="label-Placa"> Placa </label>
          <input type="text" id="PlacaV" placeholder="Ingrese Placa">
      </div>
      <div >
          <label for="AñoV" id="label-Anio"> Año </label>
          <input type="text" id="Anio" placeholder="Ingrese Año">
      </div>  
      <div >
          <label for="ColorV" id="label-ColorV"> Color </label>
          <input type="text" id="ColorV" placeholder="Ingrese Color">
      </div>
      <div >
          <label for="Vivienda" id="label-Vivienda">
            Su vivienda actual es:
          </label>
          <select name="vivienda" id="Vivienda">
            <option value="Propia">Propia</option>
            <option value="Alquilada">Alquilada</option>
            <option value="Familiar">Familiar</option>
          </select>
        </div>
        <div >
          <label for="TipoVivienda" id="label-TipoVivienda">
            Tipo de Vivienda:
          </label>
          <select name="TVivienda" id="TipoVivienda">
            <option value="Hormigon">Hormigon</option>
            <option value="Mixta"> Mixta</option>
            <option value="Madera">Madera</option>
          </select>
          <div >
              <label for="inp-4"> Posee Terreno </label>
                  <input type="checkbox" name="inp"> Si </input>
                  <input type="checkbox" name="inp"> No </input>
          </div>

        </div>
        <button type="submit" value="submit">
          Submit
        </button>
  </form>
  

<style>

body{
    background-color: #05c4c4;
    font-family: Verdana;
    text-align:center;

}

form{
    background-color:fff;
    max-width:100px
    margin= 10px auto;
    padding=30px 20px;
    box-shadow:2px 5px 10px rgba(0,0,0,0.5);

}
.form-control {
    text-align: left;
    margin-bottom: 25px;
}
.form-control label {
    display: block;
    margin-bottom: 10px;
}
.form-control input,
.form-control select,
.form-control textarea {
    border: 1px solid #777;
    border-radius: 2px;
    font-family: inherit;
    padding: 10px;
    display: block;
    width: 95%;
}

.form-control input[type="radio"],
.form-control input[type="checkbox"] {
    display: inline-block;
    width: auto;
}
button {
    background-color: #05c4c4;
    border: 1px solid #777;
    border-radius: 2px;
    font-family: inherit;
    font-size: 21px;
    display: block;
    width: 100%;
    margin-top: 50px;
    margin-bottom: 20px;
}
h4 {
  background-color: #05c4c4;
  font-family: Verdana;
  text-align:left;
  margin: 10px
}
</style>

{% endblock Formulario%}

views.py

def home2_pdf(request):
    if request.method =="POST": 
        buf = io.BytesIO()
        c = canvas.Canvas(buf, pagesize = letter, bottomup=0)
        textob =c .beginText()
        textob.setTextOrigin(inch,inch)
        textob.setFont("Helvetica", 14)  

        lines =[
        
        ]
        for line in lines:
            textob.textLine(line)

        c.drawText(textob)
        c.showPage()
        c.save()
        buf.seek(0)      
        return FileResponse(buf, as_attachment=True, filename="formulario.pdf")

urls.py snip

path('home2_pdf', home2_pdf, name='home2_pdf'),

CodePudding user response:

In your views.py you are not adding any lines to your PDF

        lines =[
        
        ]
        for line in lines:
            textob.textLine(line)

You have to use the request.POST data to construct the lines you like to have in your PDF file. We can't help you any further, as we do not know what the lines should be you like to have in your PDF.

CodePudding user response:

Looking at your html form does not have name attributes, not sure how you going to access those input in the request.POST, I'm giving the solution while assuming that your input have the name attribute, you could have listed your posted data that empty lines in your view.py list like this

lines = [
         request.POST['fecha'], 
         request.POST['cargo'],
        ]
  • Related