Estou renderizando um modelo, que estou tentando estilizar com uma folha de estilo externa. A estrutura do arquivo é a seguinte.
/app
- app_runner.py
/services
- app.py
/templates
- mainpage.html
/styles
- mainpage.css
mainpage.html se parece com isto
<html>
<head>
<link rel= "stylesheet" type= "text/css" href= "../styles/mainpage.css">
</head>
<body>
<!-- content -->
No entanto, nenhum dos meus estilos está sendo aplicado. Tem algo a ver com o fato de que o html é um modelo que estou renderizando? O python se parece com isso.
return render_template("mainpage.html", variables..)
Sei que tudo está funcionando, porque ainda sou capaz de renderizar o modelo. No entanto, quando tentei mover meu código de estilo de um bloco de "estilo" dentro da tag "head" do html para um arquivo externo, todo o estilo foi embora, deixando uma página html vazia. Alguém viu algum erro na estrutura do meu arquivo?
<script src="{{ url_for('static',filename='javascriptFileName.js') }}"> </script>
Em modelos jinja2 (que o frasco usa), use
Os
static
arquivos geralmente estão nastatic
pasta, a menos que configurado de outra forma.fonte
Eu li vários tópicos e nenhum deles corrigiu o problema que as pessoas estão descrevendo e eu também experimentei.
Eu até tentei sair do conda e usar o pip, para atualizar para o python 3.7, eu tentei todos os códigos propostos e nenhum deles corrigido.
E aqui está o porquê (o problema):
por padrão, python / flask pesquisa o estático e o modelo em uma estrutura de pasta como:
você pode verificar por si mesmo usando o depurador no Pycharm (ou qualquer outra coisa) e verificar os valores no aplicativo (app = Flask ( nome )) e pesquisar por teamplate_folder e static_folder
para corrigir isso, você deve especificar os valores ao criar o aplicativo da seguinte forma:
o caminho TEMPLATE_DIR e STATIC_DIR depende de onde o aplicativo de arquivo está localizado. no meu caso, veja a imagem, ele estava localizado dentro de uma pasta sob src.
você pode alterar o template e as pastas estáticas como desejar e se registrar no app = Flask ...
Na verdade, comecei a ter o problema de mexer com a pasta e às vezes não funcionava. isso resolve o problema de uma vez por todas
o código html se parece com isto:
Este é o código
Aqui a estrutura das pastas
fonte
Continuo tendo problemas após seguir a solução fornecida pela codegeek
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles/mainpage.css') }}">
:?No Google Chrome, pressionar o botão recarregar (F5) não recarregará os arquivos estáticos. Se você seguiu a solução aceita, mas ainda não vê as alterações feitas no CSS, pressione
ctrl + shift + R
para ignorar os arquivos em cache e recarregar os arquivos estáticos.No Firefox, pressionar o botão recarregar aparece para recarregar os arquivos estáticos.
No Edge, pressionar o botão Atualizar não recarrega o arquivo estático. Pressionar
ctrl + shift + R
deve ignorar os arquivos em cache e recarregar os arquivos estáticos. No entanto, isso não funciona no meu computador.fonte
Estou executando a versão 1.0.2 do flask agora. As estruturas de arquivo acima não funcionaram para mim, mas encontrei uma que funcionava, que são as seguintes:
(Observe que 'estático' e 'modelos' são pastas, que devem ter exatamente o mesmo nome.)
Para verificar qual versão do flask você está executando, abra o Python no terminal e digite o seguinte:
fonte
A estrutura do projeto do frasco é diferente. Como você mencionou na pergunta, a estrutura do projeto é a mesma, mas o único problema é com a pasta de estilos. A pasta de estilos deve vir dentro da pasta estática.
fonte
Mais um ponto a acrescentar a este tópico.
Se você adicionar um sublinhado ao nome do arquivo .css, não funcionará.
fonte
Mais um ponto a ser adicionado. Juntamente com as respostas votadas acima, certifique-se de que a linha abaixo seja adicionada ao
app.py
arquivo:Caso contrário, o flask não será capaz de detectar a pasta estática.
fonte
Se algum dos métodos acima não estiver funcionando e seu código estiver perfeito, tente fazer uma atualização pressionando Ctrl + F5. Isso limpará todos os chaces e recarregará o arquivo. Funcionou para mim
fonte
Tenho certeza de que é semelhante ao template do Laravel, foi assim que fiz o meu.
Referido: problema de caminho do arquivo CSS
Aplicativo simples em frasco que lê seu conteúdo de um arquivo .html. A folha de estilo externa está sendo bloqueada?
fonte