Pull to refresh

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

Reading time6 min
Views11K

Дисклеймер

Я только начинаю свой путь, как в веб-разработке, так и в программировании в принципе, с ответом на этот вопрос мучился 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 - бесполезна тк такие шаблоны нужны для определенных частей, например шапки или подвала сайта или формы для сбора контактов, а то что делал я - не более чем учебные цели.

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

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

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

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

Tags:
Hubs:
0
Comments12

Articles