Как работать из PyCharm community c CSS

от автора

Дисклеймер

Я только начинаю свой путь, как в веб-разработке, так и в программировании в принципе, с ответом на этот вопрос мучился 2 дня и казалось бы перепробовал все, НО как это обычно бывает, решение лежало на поверхности.

p.s. Могу путаться в терминах в силу своей неопытности, прошу строго не судить. Всегда рад конструктивной обратной связи, спасибо за понимание! Да, я знаю о существовании Django, просто начинать как мне кажется лучше с голого кода и дальше с базовыми знаниями переходить к изучению этого прекрасного фреймворка.


Начало

На одном сливе курсов по Fullstack разработке на Python, прохожу модуль: Html + Css + Python, автор работает в Sublime text и у него прекрасно совмещаются все три языка, я же по определенному стечению обстоятельств пишу код в PyCharm community edition (пробовал и Sublime и Atom и даже в intelij idea попытался-знаю, что она в основном для братьев Джавистов предназначена, но все же).

При совмещении Html + Css в Pc возникла следующая проблема:

Версия community не поддерживает файлы с расширением .css

Решение

Решения у меня довольно примитивные и рассчитаны под два варианта развития событий.

Первый: Вы пишете голый html код не используя при этом python и вам просто нужно проделать определенные манипуляции с его стилистикой, давайте смотреть:

  1. Создаем файл с расширением .html

  2. Если вы создаете файл в Pc, то файл у вас будет уже со следующим шаблоном html кода ( Если нет, то возьмите либо отсюда, либо можете погуглить как его включить):

<!DOCTYPE html> <html lang="en"> <head>   <!-- Как мы видим у нас есть тег <head>, именно в него мы и будем добавлять наш код css -->     <meta charset="UTF-8">     <title>Title</title> </head>   <!-- Тут тег <head> закрывается --> <body>  </body> </html>

Добавление кода:

Для того чтобы нам было что менять, давайте добавим пару элементов на нашу страницу, делается это следующим образом:

<!DOCTYPE html> <html lang="en"> <head>    <!-- Как мы видим у нас есть тег <head>, именно в него мы и будем добавлять наш код css -->     <meta charset="UTF-8">     <title>Title</title> </head>    <!-- Тут тег <head> закрывается --> <body>  <!-- Тут открываем тег <body> --> <h1>Учебный текст для хабра</h1>  <!-- Это тег заголовка с размером "1" -->   <hr/>  <!-- Тут разделяем заголовок и текст сплошной чертой -->   <p>Как все таки использовать стили?</p>  <!-- Это просто текст -->   <ol>  <!-- Тут открываем нумерованный список -->   <li>Мотивация</li> <!-- Перечисляем элементы нумерованного списка -->     <li>И другая тема</li><!-- Перечисляем элементы нумерованного списка -->   </ol>  <!-- Тут закрываем нумерованный список -->   <hr/>  <!-- Снова разделяем заголовок и текст сплошной чертой --> <p><a href='https://habr.com/ru/all/'>Ссылка на самый крутой портал</a><p>  <!-- Пишем текст и интегрируем в него ссылку на САМЫЙ КРУТОЙ ПОРТАЛ --> </body>  <!-- Тут закрываем тег <body> --> </html>

Этот код будет выдавать следующий результат:

Прикрутим к нашему файлу css:

<!DOCTYPE html> <html lang="en"> <head>   <!-- Как мы видим у нас есть тег <head>, именно в него мы и будем добавлять наш код css -->     <meta charset="UTF-8">     <title>Title</title>     <style> <!-- Открываем тег <style> - именно внутри него указываются наши стили -->  body {       background: #000000;    color: #fff;    }    a {    color: #808000    }    h1 {    color: #008080    }    p {    color: #008000    }    ol {    color: #008000    }          </style>  <!-- Не забываем закрывать тег <style> -->    </head>   <!-- Тут тег <head> закрывается --> <body> <h1>Учебный текст для хабра</h1>   <hr/>   <p>Как все таки использовать стили?</p>   <ol>   <li>Мотивация</li>     <li>И другая тема</li>   </ol>   <hr/> <p><a href='https://habr.com/ru/all/'>Ссылка на самый крутой портал</a><p> </body> </html>

Объясняю по написанию css: Внутри тега <style> мы указываем те теги, в которых хотим что-либо изменить, в нашем случае мы меняем для всех элементов в теги <body> фон и цвет текста ( сам синтаксис можно увидеть в коде выше), далее идем по ВСЕМ отдельным элементам, а именно: a, h1, p, ol. Не забываем, что теги там указываются «Голые» и цвет именно в таком формате записи надо указывать не просто название, а ИМЕННО КОД ЦВЕТА. Получаем такой результат:

Как мы видим, все параметры успешно изменены.

Для изменения других параметров по типу: Размера, самого шрифта и тд, просто найдите синтаксис в интернете и вставьте в фигурные скобки{} к тому элементу, который необходим.

CSS + HTML + Python

Теперь переходим к более интересной теме, а именно совмещение всех трех языков и прямо в IDE PyCharm.

Сразу скажу, что тут не будет написания какого то бэкенда, связи скрипта с сервером или еще каких то слов на продвинутом языке, тут мы просто создадим небольшой генератор html, обернем ее в функцию в файле .py, закинем туда css, запишем все это в html и откроем страницу.

Допустим, у вас не генерируется html шаблон, который я предоставил выше или вы работаете из другого редактора или еще по каким то причинам, давайте станем более независимы и напишем свой шаблон. Приступим:

  1. Создаем файл с расширением .py

  2. Задаем функцию с помощью ключевого слова def

 # -*- coding: utf-8 -*- #  У меня возникает ошибка связанная с кодировкой, поэтому в комментарии сверху указываю то, что указываю. def habr_sample(file, style, body, mode='w', encoding='windows-1251', title='title'):  # Прописываем ключевое слово def, далее прописываем название функции и указываем параметры     '''     Функция-шаблонизатор html кода из python     :param file:     :param style:     :param body:     :param mode:     :param encoding:     :param title:     :return:     '''     fo = open(file, mode)     habr_html_sample = f"""  <!DOCTYPE html> <html lang="ru"> <head>        <meta charset={encoding}>     <title>{title}</title>     <style>     {style}     </style> </head>    <body> {body} </body> </html> """     fo.write(habr_html_sample)     fo.close() # Не забываем следить за отступами, указывать, что это именно f-строка, для возможности указать внутри текста аргументы функции # и ставить тройные кавычки для того, чтобы указывать многострочный код  style_css = ''' body {       background: #000000;    color: #fff;    }    a {    color: #808000    }    h1 {    color: #008080    }    p {    color: #008000    }    ol {    color: #008000    } ''' body = """ <h1>Учебный текст для хабра</h1>   <hr/>   <p>Как все таки использовать стили?</p>   <ol>   <li>Мотивация</li>     <li>И другая тема</li>   </ol>   <hr/> <p><a href='https://habr.com/ru/all/'>Ссылка на самый крутой портал</a><p> """ habr_sample('habr.html', style_css, body)

Пояснения: в функцию передаются 3 позиционных аргумента и 3 ключевых

Аргумент file — принимает в себя файл для записи (html документ)

Аргумент style — сюда передаем переменную со стилями css ( предварительно записав в переменную)

Аргумент body — сюда передаются те теги, которые хотим использовать в теле кода

Аргумент mode — это режим в котором мы открываем файл (‘w’ — в этом режиме мы только перезаписываем файл, про другие режимы можете почитать в интернете и если нужно, то после позиционных аргументов, указать нужный вам режим, например: mode=’a’)

Аргумент encoding — это кодировка, в которой представлен html файл, по умолчанию она равна «UTF-8», но у меня при этой кодировке ничего не отображается, поэтому я по умолчанию сделал ‘windows-1251’ ( это конкретно для файла .html, для файлов .py, когда я использую их с HTML, я использую следующий синтаксис: в самом верху программы указываю комментарий # -*- coding: utf-8 -*-

Далее обязательно пишем документацию к функции

Далее вызываем функцию open()- туда передаем название файла и режим открытия(это берем из аргументов нашей главной функции)

Далее обьявляем переменную и передаем туда то, что будет у нас находиться в <body>

Используем переменную, где мы открывали файл и применяем функцию write()- сюда передаем переменную, в которую записывали <body>

Далее закрываем функцию

При вызове передаем все параметры и получаем результат:

Так же можно наш шаблон разбить на подшаблоны, по типу: формирования заголовков и тд

По сути та работа, которую я проделал из python — бесполезна тк такие шаблоны нужны для определенных частей, например шапки или подвала сайта или формы для сбора контактов, а то что делал я — не более чем учебные цели.

Если эта статья облегчит хоть кому-нибудь жизнь, пишите фидбэк.

Могу потихоньку рассказывать о таких нюансах, которые сам для себя узнаю и понемногу улучшать подачу материала и оформление, если кому-то это будет нужно.

А если сюда зайдут каким-то образом матерые волки, то буду признателен за конструктивную критику.

Спасибо за уделенное время!


ссылка на оригинал статьи https://habr.com/ru/articles/691892/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *