python - tag - django templates examples
Falta la página de administración de Django en CSS (17)
Vi esta question y recomendación de Django Projects here pero todavía no puedo hacer que esto funcione. Mis páginas de administrador de Django no muestran el CSS en absoluto.
Esta es mi configuración actual.
settings.py
ADMIN_MEDIA_PREFIX = ''/media/admin/''
httpd.conf
<VirtualHost *:80>
DocumentRoot /home/django/sgel
ServerName ec2-***-**-***-***.ap-**********-1.compute.amazonaws.com
ErrorLog /home/django/sgel/logs/apache_error.log
CustomLog /home/django/sgel/logs/apache_access.log combined
WSGIScriptAlias / /home/django/sgel/apache/django.wsgi
<Directory /home/django/sgel/media>
Order deny,allow
Allow from all
</Directory>
<Directory /home/django/sgel/apache>
Order deny,allow
Allow from all
</Directory>
LogLevel warn
Alias /media/ /home/django/sgel/media/
</VirtualHost>
<VirtualHost *:80>
ServerName sgel.com
Redirect permanent / http://www.sgel.com/
</VirtualHost>
Además, también ejecuté lo siguiente para crear (creo) el enlace simbólico ln -s /home/djangotest/sgel/media/admin/ /usr/lib/python2.6/site-packages/django/contrib/admin/media/
ACTUALIZAR
En mi archivo httpd.conf,
User django
Group django
Cuando ejecuto ls -l en mi directorio /media
drwxr-xr-x 2 root root 4096 Apr 4 11:03 admin
-rw-r--r-- 1 root root 9 Apr 8 09:02 test.txt
¿Debería ese usuario root ser django en su lugar?
ACTUALIZACIÓN 2 Cuando ingreso ls -la
en mi carpeta /media/admin
total 12
drwxr-xr-x 2 root root 4096 Apr 13 03:33 .
drwxr-xr-x 3 root root 4096 Apr 8 09:02 ..
lrwxrwxrwx 1 root root 60 Apr 13 03:33 media -> /usr/lib/python2.6/site-packages/django/contrib/admin/media/
La cuestión es que cuando navego a /usr/lib/python2.6/site-packages/django/contrib/admin/media/
, la carpeta estaba vacía. Así que copié las carpetas CSS, IMG y JS de mi instalación de Django en /usr/lib/python2.6/site-packages/django/contrib/admin/media/
y todavía no funcionó
¿Intentaste establecer el valor para
MEDIA_ROOT MEDIA_URL ADMIN_MEDIA_PREFIX
¿correctamente?
Quiero decir que la url MEDIA_ROOT y ADMIN_MEDIA_PREFX deberían tener un valor diferente. Por favor verifique estos valores en su configuración.py e intente nuevamente.
Espero que esto ayude.
Además de corregir el enlace simbólico como sugirió Daniel Roseman, deberá asegurarse de que el usuario que está ejecutando Apache tenga acceso de lectura a los medios de administración.
- Si hace
ls -l
en su directorio de medios, ¿ve el enlace simbólico? - Si
cd admin
desde su directorio de medios, ¿funciona? Si luego ejecutals
puede ver los medios de administración? - ¿El usuario que ejecuta Apache tiene acceso de lectura al medio de administración?
Si todas esas cosas funcionan, entonces actualice su pregunta con su configuración actual y los resultados de esos comandos y lo veremos de nuevo.
Respuesta a la actualización : Ok, los permisos se ven bien. Parece que tienes la estructura de directorios en tu directorio de medios un poco mal.
El hecho de que /usr/lib/python2.6/site-packages/django/contrib/admin/media/
estuviera vacío también es preocupante. Una vez que resuelva el problema inmediato, es posible que desee volver a instalar django en el lugar esperado.
De todos modos, así es como debe verse la estructura:
$ cd media
$ ls -la
drwxr-xr-x 2 root root 4096 Apr 13 03:33 .
drwxr-xr-x 3 root root 4096 Apr 8 09:02 ..
lrwxrwxrwx 1 root root 60 Apr 13 03:33 admin -> /usr/lib/python2.6/site-packages/django/contrib/admin/media/
-rw-r--r-- 1 root root 9 Apr 8 09:02 test.txt
Es decir, dentro del directorio media/
, debe haber un enlace llamado admin
directamente al directorio /admin/media
de su instalación de django.
Para arreglar lo que tienes, dentro del directorio media/admin/
ejecuta:
rm media
cd ..
rmdir admin
y luego vuelva a crear el enlace simbólico como se sugiere en la respuesta de Daniel Roseman.
Aquí hay un par de problemas, ambos relacionados con su enlace simbólico.
En primer lugar, la fuente y el objetivo tenían que ser al revés (yo siempre me equivoco).
En segundo lugar, ha utilizado una ruta completamente diferente a la que ha especificado en su djangotest/sgelections
Apache - djangotest/sgelections
vs django/sgel
.
Hazlo asi:
cd /home/django/sgel/media/
ln -s /usr/lib/python2.6/site-packages/django/contrib/admin/media/ admin
En Firebug, use la pestaña Red y vea las solicitudes que realiza su navegador para los archivos css. Vea la respuesta a sus solicitudes allí mismo. Creo que encontrarás el problema allí.
Recientemente tuve el mismo problema. El problema fue cuando mi navegador solicita los archivos css, la respuesta contenía el contenido de la página html de inicio de sesión de mi proyecto. No recuerdo ahora como resolví mi problema. Intentaré recordar y publicar la solución aquí.
Déjame saber si tienes el mismo problema.
Encontré el mismo problema mientras ejecutaba el Bitnami Django Stack en Win32 (servidor de desarrollo integrado)
Resolví el problema encontrando las carpetas CSS faltantes en la instalación y cambiando settings.py.
# Additional locations of static files
STATICFILES_DIRS = (
''C:/Program Files/BitNami DjangoStack/apps/django/django/contrib'',
)
Esto te ayudará a comenzar a desarrollar ... No es óptimo. No olvides la coma final :)
Entonces, lo primero que desea hacer es cambiar el directorio a su carpeta estática y agregar un enlace simbólico.
Hice esto con un entorno virtual, así que uso
ln -s ~/virtualenv/my-virtualenv/lib/python2.x/site-packages/django/contrib/admin/static/admin admin
El siguiente paso es editar tu httpd.conf
Alias / static / admin / ~ / mysite / static / admin /
Reinicie su servidor apache y listo!
La solución fácil es cambiar una línea en su archivo wsgi.py
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
se convierte en
from django.core.wsgi import get_wsgi_application
from dj_static import Cling
application = Cling(get_wsgi_application())
La forma más fácil de hacer que el Admin CSS se muestre correctamente. Aclamaciones
No estoy seguro de si esto ayudará, pero en mi archivo de configuración tengo:
Alias /adminmedia/ /var/lib/python-support/python2.6/django/contrib/admin/media/
<Directory "/var/lib/python-support/python2.6/django/contrib/admin/media">
AllowOverride None
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>
Funciona, pero tengo mi servidor configurado solo para desarrollo / prueba.
Otro método que acabo de encontrar, y parece un método adecuadamente soportado.
Asegúrate de tener el módulo staticfiles en tu configuración. También configure la opción STATIC_ROOT.
https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#module-django.contrib.staticfiles
Cree su carpeta / static / / y establezca permisos.
Configurar apache con un / static / alias.
alias /static <path to project root>/static/
<Directory "<path to project root>/static/">
Order deny,allow
Allow from all
</Directory>
entonces desde su carpeta de proyecto ejecute
sudo python manage.py collectstatic [-n to do a dry run]
Todo lo que parece que hace es copiar los archivos estáticos del administrador en la carpeta de proyectos para el servicio web.
Sé que se resolvió, pero creo que vale la pena compartir mi solución.
Simplemente agregué el alias en apache y funcionó hasta ahora.
Alias /static/admin/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/
Alias admin/media/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/
Si está utilizando virtualenvwrapper
como yo, esta es la forma en que puede encontrar sus archivos de medios de administración y corregirlos:
workon <project_name>
export DJANGO_BASEFILE=`python -c ''import django; print django.__file__''`
export DJANGO_BASEDIR=$(dirname ${DJANGO_BASEFILE})
ln -s $DJANGO_BASEDIR/contrib/admin/media <project_dir>/media/admin
Reemplace <project_name>
a su nombre de entorno virtualenvwrapper y project_dir
a su directorio de trabajo. :)
Si nada ayuda, agrega lo siguiente a urls.py
url(r''^media/(?P<path>.*)$'', ''django.views.static.serve'', { <br/>
''document_root'': ''/usr/lib/python2.4/site-packages/django/contrib/admin/media/'', <br/>
''show_indexes'' : True, <br/>
}), <br/>
Esto es independiente de apache o nginx.
Solía tener el mismo problema, lo resolví utilizando el plugin Fireebox firebug, que le indica dónde está su sitio buscando los archivos de medios, y también cómo verificó el contenido de la carpeta admin / media para ver si estaban vacíos. ?
Tratar de agregar
Options FollowSymLinks
para usted
<Directory /home/django/sgel/media>
Order deny,allow
Allow from all
</Directory>
para que termines con
<Directory /home/django/sgel/media>
Options FollowSymLinks
Order deny,allow
Allow from all
</Directory>
Tuve el mismo problema pero nada de esto ayudó realmente. Resultó que mi versión de grappelli estaba desactualizada. ( https://github.com/sehmaschine/django-grappelli ) Lo desinstalé y luego lo reinstalé con una versión más nueva. pip install django-grappelli==2.4.4
Si estás usando un skin de administrador como yo, puedes considerar actualizarlo.
cuando hablamos de django, deberíamos saber en qué edición ejecutamos. "ADMIN_MEDIA_PREFIX" se usa en django antes de la edición de 1.4, vea
The included administration app django.contrib.admin has for a long time
shipped with a default set of static files such as JavaScript, images and
stylesheets. Django 1.3 added a new contrib app django.contrib.staticfiles
to handle such files in a generic way and defined conventions for static
files included in apps.
Starting in Django 1.4, the admin''s static files also follow this convention,
to make the files easier to deploy. In previous versions of Django, it was
also common to define an ADMIN_MEDIA_PREFIX setting to point to the URL where
the admin''s static files live on a Web server. This setting has now been deprecated
and replaced by the more general setting STATIC_URL. Django will now expect to
find the admin static files under the URL <STATIC_URL>/admin/.
https://docs.djangoproject.com/en/dev/releases/1.4/ . Estoy usando django 1.4, y todavía estoy confundido acerca de esto.
puedes correr
python
>>> import django
>>> print django.__file__
la otra pregunta: ¿sus medios normales se colocan en / home / django / sgel / media / work (es decir, que Apache sirve como se espera?)