TypeError: static() got an unexpected keyword argument ‘document_root’ in Django»

django error

El error typeError: static() got an unexpected keyword argument ‘document_root, puede aparecer, en Django cuando intentamos añadir en nuestro urls.py

+= static(settings.MEDIA_URL, documnet_root=settings.MEDIA_ROOT)

Esta modificación de las urls, la hacemos para decirle a Django, en qué lugar se encuentran nuestros archivos media.

Si nos fijamos en el contenido de nuestro archivo settings.py, debe aparecer la dirección que indica , dónde guardamos nuestros archivos estáticos y en que lugar nuestros archivos tipo media.

Es algo asi

MEDIA_URL = '/media/'
 MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'media')
 STATIC_URL = '/static/' 

Dicho esto, el error ‘TypeError: static() got an unexpected keyword argument ‘document_root‘ puede proceder de diversas fuentes, dos de las que conozco y me resultan más comunes son:

 Importar de modo incorrecto la ruta del método static utilizando:

 from django.templatetags.static import static

cuando deberiamos importar

 from django.conf.urls.static import static   

El primero de ellos nos permite manejar archivos estáticos, como css, javascript o imágenes.

El segundo  es una una función helper que nos devuelve la  url,  donde se encuentra un contenido especifico  y su estructura es:

static.static(prefixview=django.views.static.serve**kwargs)

import *

Si, así es. El segundo error es emplear el uso de import *, que por más que pueda parecer cómodo , me ha traído algún de un dolor de cabeza.

En este articulo pueden ampliar conocimiento sobre sus inconvenientes.

“….El amor siempre empieza soñando y termina en insomnio“

R.Arjona

Modelo para guardar un archivo en Django por fecha

logo django

En este articulo intentaré mostrarte como emplear el modelo para guardar un archivo en Django por fecha, lo cual puede ser muy útil al momento de recuperarlo.

Supongamos que tenemos archivos del tipo fotos y notas

Para lograr tenerlos organizarlos por fecha,  la estructura que debe llevar el modelo, puede ser esta en la que los archivos dentro de la carpeta img o la carpeta nota ordenados en el formato año/mes/dia.

foto = models.ImageField(upload_to = 'img/%Y/%m/%d')
nota = models.FileField(upload_to = 'nota/%Y/%m/%d')

Espero sinceramente, haber ayudado a alguien .

Quien siembre 100 boniatos y diga que sembró 200, tendrá que comerse sus mentiras cuando el boniato se le acabe.

D.

Recuperar una imagen en Django, dinámicamente.

logo django

Veamos como recuperar una imagen en Django, para que Django no la dibuje dinámicamente en función del usuario.

Cuando trabajamos en Django, es común colocar el avatar de nuestro usuario en el panel, si tenemos habilitado nuestro modulo "context_procesor", dentro de templates en nuestro archivo setting.py., podemos seguir las instrucciones siguiente.

Otro Post sobre Django

Como recuperar una imagen en Django dinámicamente.

El código para llamar a nuestra imagen podría ser este:

<img src='{{user.avatar.url }}'
alt="{{user.username }}" 
class="class="img-fluid  user_imag rounded-circle">

Si el modulo no estuviera habilitado debemos incluirlo

TEMPLATES = [
 {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
        'django.template.context_processors.debug',
        'django.template.context_processors.request',     #modulo
        'django.contrib.auth.context_processors.auth',
        'django.contrib.messages.context_processors.messages',
            ],
         },
      },
]

La magia está, en que el método request(), nos traerá la instancia del user a toda pagina que tengamos, por tanto dispondremos de sus atributos, para el usuario visitante.

Recuperando una imagen en el html

Suponiendo que hemos creado nuestro modelo, nuestro form y nuestras url, podemos recuperar a nuestra imagen con

{% for a in object_list  %} 
<section class="dashboard-header section-padding" style=" border:2px solid blue; margin-bottom:15px;">
  <div class="container-fluid">
    <div class="col-lg-3" >
      <img  src='{{a.profile.photouser.url}}'  alt="{{a.user.username}}" class="img-fluid  user_imag rounded-circle">
    </div> …….
 </section>
 {% endfor %} 
  

…. hay que levantarse cada mañana con una esperanza y dormirse cada noche con una meta….

Espero que sirva de ayuda a alguien