Por que o Django gera erros HTTP 500 para mídia estática quando a depuração é definida como falsa?

StackOverflow https://stackoverflow.com/questions/121866

  •  02-07-2019
  •  | 
  •  

Pergunta

Estou me preparando para implantar meu aplicativo de Django e notei que, quando alterei a configuração "Debug" para False, todas as referências a arquivos estáticos (ou seja, JavaScript, CSS, etc.) resultam em HTTP 500 erros.

Alguma idéia do que está causando esse problema (e como corrigi -lo)?

Foi útil?

Solução

Eu recomendo permitir que seu servidor da web lide com as solicitações estáticas, sem chegar ao Django. No meu urls.py, Eu só adiciono o manipulador de solicitação estática quando a depuração é definida como true.

Tecnicamente, o Django que serve a estática funciona bem. Definitivamente leia a página curta dos documentos, http://docs.djangoproject.com/en/dev/howto/static-files/. Você vai querer usar uma entrada como esta em urls.py

(r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': '/path/to/media'})

Outras dicas

Parece que você pode estar tentando servir sua mídia estática usando o Django Development Server. Dar uma olhada em http://docs.djangoproject.com/en/dev/howto/deployment/ Para alguns cenários de implantação/Howtos e http://docs.djangoproject.com/en/dev/howto/static-files/ Para como servir arquivos estáticos (mas observe o aviso de não usar esses métodos em produção).

Em geral, eu examinaria os logs do servidor e veria de onde ele está tentando buscar os arquivos. Suspeito que os 500 erros sejam realmente 404 erros, mas eles se tornam 500 erros porque o Django não consegue encontrar ou renderizar o modelo 404.html. Se não for esse o caso, seria útil se você pudesse postar o erro 500 específico que está recebendo.

Você também deve verificar seus URLs em todo o lugar. Quando a depuração é definida como falsa, todos os URLs sem arrastar "/" são tratados como um bug, diferentemente de quando você tem depuração = verdadeiro, nesse caso, o Django anexará "/" em todos os lugares está faltando. Portanto, em suma, verifique se todos os links terminam com uma barra em todos os lugares.

Acontece que eu comentarei o SECRET_KEY variável. Não havia como eu saber. Só tive que experimentar as coisas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top