Eu faço um site de administração do Django usando Django versão de desenvolvimento do Django
Mas não tem um estilo CSS:
o que eu posso fazer?
obrigado
Eu faço um site de administração do Django usando Django versão de desenvolvimento do Django
Mas não tem um estilo CSS:
o que eu posso fazer?
obrigado
Respostas:
Django não serve arquivos estáticos por conta própria. Você tem que dizer onde estão os arquivos.
O ADMIN_MEDIA_PREFIX no settings.py apontará o Django para o local correto.
Já que você está usando a versão de desenvolvimento, você vai querer o documento específico do dev para instruções de arquivos estáticos . O link de Adam o levará à versão 1.2.
Depois de configurar seu STATIC_ROOT
e STATIC_URL
, você pode ter que executar
python manage.py collectstatic
STATIC_ROOT
e STATIC_URL
, exemplo: eu combinei "staticfiles" e "static" , usei STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"
e STATIC_URL="/static/"
. Meu aplicativo funcionou bem, mas os arquivos admin não foram encontrados. então mude para "staticfiles" ou "static"
ADMIN_MEDIA_PREFIX
está obsoleto agora, use em seu STATIC_URL
lugar. Definir STATIC_URL = '/static/'
em settings.py deve fazer o trabalho. Experimentar:
import os.path import sys
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
e depois:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
Funciona no Django 1.4 pré-alfa SVN-16920.
static/admin
dentro static/css/
, posso acessar os arquivos css. Parece que posso acessar os arquivos css apenas se estiverem dentro do, static/files
mas o collectstatic não os coloca lá. Claro, mover a pasta manualmente simplesmente não funciona porque os modelos continuam apontando para static/admin
.
Também encontrei esse problema seguindo o tutorial do livro Django. No Capítulo 5 | Instalando o modelo, o livro afirma ao referir-se ao INSTALLED_APPS padrão- "Comente temporariamente todas as seis strings colocando um caractere hash (#) na frente delas." http://www.djangobook.com/en/2.0/chapter05.html
Então, no Capítulo 6, o Livro diz ao leitor para descomentar 4 dessas 6 linhas - "note que comentamos essas quatro entradas INSTALLED_APPS no Capítulo 5. Remova-os de comentários agora."
Mas a linha statcifiles é o que é necessário para restaurar o CSS para a página de administração, então descomente que 'django.contrib.staticfiles',
Eu li vários outros tópicos tentando corrigir isso ... recorri a um alias como em outros tópicos. Isso pressupõe que seu próprio aplicativo personalizado está exibindo arquivos estáticos corretamente, o que indicaria que seu STATIC_ROOT e STATIC_URL têm configurações adequadas.
STATIC_ROOT = ''
STATIC_URL = '/static/'
Então (a partir do seu diretório estático):
ubuntu@ip-1-2-3-4:/srv/www/mysite.com/app_folder/static$ sudo ln -s /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/ admin
Espero que isso ajude alguém ... há muitos tópicos neste tópico. :(
Em /project_name/project_name/settings.py
você precisa definir STATIC_URL
para informar ao seu site qual url usar para arquivos estáticos.
Em seguida, defina STATIC_ROOT
como alguma pasta em seu sistema de arquivos que não seja igual a nenhum dos seus diretórios listados na STATICFILES_DIRS
lista.
Depois de STATICFILES_ROOT
definido, você executaria a python manage.py collectstatic
partir do diretório do projeto.
Isso copiará todos os arquivos estáticos do administrador e todos os arquivos em quaisquer outras pastas listadas na STATICFILES_DIRS
lista. Basicamente, isso coloca todos os seus arquivos estáticos em um só lugar para que você possa movê-los para o seu CDN ao implantar o seu site. Se você é como eu e não tem um CDN, você tem duas opções:
STATIC_ROOT
à STATICFILES_DIRS
lista. Isso permitirá que os localizadores de arquivos estáticos no django localizem todos os arquivos estáticos.STATICFILES_DIRS
para incluir esse novo local.Não faço comentários sobre segurança com esta resposta, é apenas a maneira que pude desenvolver com meu servidor web para pequenos projetos. Espero que você queira um CDN como o django sugere se estiver fazendo algo em escala maior.
ATUALIZAÇÃO: Acabei de encontrar esse problema e esse método não fez exatamente o que eu acho que você deseja. O que acabou funcionando para mim foi, depois de executar collectstatic
, apenas copiar os arquivos estáticos do administrador que ele colocou no STATICFILES_ROOT
diretório que usei para meus próprios arquivos estáticos. Isso resolveu o problema para mim.
Além de muitas das outras respostas serem úteis, tive um problema que ainda não foi observado. Depois de atualizar do Django 1.3 para 1.6, meu diretório de arquivos estáticos tinha um link simbólico quebrado para os arquivos estáticos do administrador django.
Meu settings.py foi configurado com:
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
De acordo com esta resposta ,
O Django agora espera encontrar os arquivos estáticos do admin na URL / admin /.
Eu tinha um link simbólico /var/www/static/my-dev/admin
que foi definido como:
admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/
Esse local não existe mais no Django 1.6, então atualizei o link para:
admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/
E agora meu site de administração está funcionando corretamente.
Se você estiver usando o servidor Apache para hospedar seu site django, você precisa ter certeza de que o alias estático aponta para seu diretório / para site / site_media / static /. Se seus arquivos estáticos estiverem em / diretório para site / site / site_media / static /, a configuração anterior do alias do Apache não funcionará.
Enquanto seguia o tutorial do Django, tive um problema semelhante e, no meu caso, o problema era o tipo MIME usado pelo servidor de desenvolvimento ao servir arquivos css.
O tipo MIME veiculado foi 'application / x-css' que levou à seguinte mensagem de aviso no Chrome (na guia 'Rede' das ferramentas do desenvolvedor):
Recurso interpretado como folha de estilo, mas transferido com aplicativo do tipo MIME / x-css: " http://127.0.0.1:8000/static/admin/css/base.css "
A solução alternativa que encontrei: alterar o tipo MIME a ser servido adicionando as seguintes linhas ao arquivo manage.py do django webapp:
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
Nota: funcionou para mim com Django 1.7.4 no Python 2.7 e Chrome 40.0
Content-Type: text/plain
e não estão sendo renderizados na página.
O mesmo tipo de problema que encontrei ao desenvolver um site em django-1.10.5 e python-2.7.13. Mas no meu firefox-51 e no Chrome, a página de login foi capaz de obter o css, mas ainda não havia estilo. Mas, estranhamente, estava funcionando no IE-8.
Tentei fazer todas as coisas possíveis mencionadas aqui e adequadas ao meu conjunto de versões sw. Nenhum funcionou.
Mas quando tentei o mesmo site em outro sistema que tinha o python-2.7.8, funcionou ..
Acabei de postar se pode ajudar alguém ...
editado: mais tarde descobri que em python-2.7.13, escrever as duas linhas a seguir em settings.py (além de limpar o cache do navegador) tinha resolvido o problema
import mimetypes
mimetypes.add_type("text/css", ".css", True)
Meu problema foi resolvido criando um novo ambiente virtual para o projeto, antes disso eu estava usando o interpretador python de nível de sistema geral.
$ mkvirtualenv myproject
Referência: https://docs.djangoproject.com/en/2.1/howto/windows/
corre: python manage.py collectstatic
Adicione esta linha ao Vhost, localizado em: /etc/apache2/sites-available/000-default.conf
Alias / static / admin / /var/www/html/example.com/static/admin
Aqui está toda a configuração do Vhost para a configuração do Django
<VirtualHost *:80>
ServerName gautam.tech
ServerAlias www.gautam.tech
WSGIDaemonProcess gautam.tech python-path=/var/www/html/gautam.tech python-home=/var/www/html/gautam.tech/venv
WSGIProcessGroup gautam.tech
#Your static files location
Alias /static /var/www/html/gautam.tech/static
Alias /media/ /var/www/html/gautam.tech/media
Alias /static/admin/ /var/www/html/gautam.tech/static/admin
<Directory /var/www/html/gautam.tech/static>
Require all granted
</Directory>
<Directory /var/www/html/gautam.tech/media>
Require all granted
</Directory>
WSGIScriptAlias / /var/www/html/gautam.tech/myproject/wsgi.py
DocumentRoot /var/www/html/gautam.tech
<Directory /var/www/html/gautam.tech>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
CustomLog /var/www/html/gautam.tech/access.log combined
ErrorLog /var/www/html/gautam.tech/error.log
</VirtualHost>
Isso vai funcionar com certeza!
Se o problema estiver em um servidor dev / test / prod e usando Nginx, siga as etapas abaixo.
defina as configurações em settings.py como algo abaixo
STATIC_URL = '/static/'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Execute o comando abaixo para criar arquivos css e js na pasta estática
$ python manage.py collectstatic
config em / etc / nginx / sites-enabled / example (Nginx) para servir arquivos estáticos
location /static/ {
alias /project/root/folder/static/;
}
isso funciona bem e facilmente. Mudei (manualmente) a pasta. apenas você tem que copiar seu static/admin
do diretório do projeto principal e colá-lo em public_html static/
se não houver uma pasta estática você deve executar o seguinte comando no terminal
python manage.py collectstatic
aqui vai com o css funcionando do Django admin
Se você tiver um valor definido em settings.py para STATICFILES_DIRS e a pasta declarada não existir ou estiver em um local errado, isso fará com que o Admin não tenha nenhum estilo, por exemplo, definindo STATICFILES_DIRS = (os.path.join (BASE_DIR, "estático" )) e a pasta estática não existe
Falhando depois de tentar milhares de sugestões, finalmente encontrei uma solução que ajudou. Aqui está o que experimentei e o que estava usando. Estou usando o servidor web django-1.11 e nginx. Em primeiro lugar, certifiquei-me de que meus arquivos CSS / js não estavam obtendo 404 no console do navegador. Depois disso, pude ver um aviso
Recurso interpretado como folha de estilo, mas transferido com tipo mime text / plain
Encontrei o base.html nos modelos de administração e removi
type="text/css"
e agora as linhas se parecem com isto:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
Isso resolveu o problema para mim.
Configurando arquivos estáticos
Certifique-se de que django.contrib.staticfiles
está incluído em seu INSTALLED_APPS .
Em seu arquivo settings.py, defina STATIC_URL, por exemplo:
STATIC_URL = '/static/'
para mais detalhes de arquivos estáticos
O painel do administrador estava funcionando bem, exceto que o css não foi carregado. Isso funcionou para Lightsail Django com Apache
1. Defina STATIC_ROOT e STATIC_URL em settings.py
STATIC_ROOT = '/opt/bitnami/projects/decisions/decision/'
STATIC_URL = '/static/'
2. Ejetar (copiar) arquivos de ativos de administração para o projeto
executar python manage.py collectstatic
este comando cria uma /opt/bitnami/projects/decisions/decision/admin
pasta com css/
fonts/
img/
js/
subpastas
3. Faça / url estático acessível a partir do Apache
Cole este snippet em /opt/bitnami/apache2/conf/bitnami/bitnami.conf
(se você configurou SSL, o local do arquivo será /opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf
)
Alias /static/ "/opt/bitnami/projects/decisions/decision/"
<Directory "/opt/bitnami/projects/decisions/decision/">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
4. Não se esqueça de reiniciar o apache
sudo /opt/bitnami/ctlscript.sh restart apache