Рубрики
Без рубрики

30 дней Python 👨💻 – день 25 – Дополнения веб-разработки

Начиная с основного скелета приложения Flask, сегодня я реализовал некоторые основные функции для завершения … Теги с Python, Challenge.

Начиная с основного скелета приложения Flask, сегодня я реализовал некоторые основные функции для завершения нашего простого минималистского приложения блога. Сначала используйте шаблон наследования шаблона колбы, я работал над повторным использованием Common Code шаблона, а затем добавил два фиктивных поста, чтобы динамически отобрать их. Наконец, генерируя требования .txt Файл Чтобы сохранить все пакетные зависимости в одном файле, который затем может использоваться для загрузки всех пакетов, использующих одну команду.

Наследование шаблона

В настоящее время index.html , о.html Шаблоны содержат дубликат HTML-код. Поскольку колба использует Jinja в качестве механизма шаблона, мы можем использовать мощный концепцию наследования шаблона для создания файла базового шаблона, который будет содержать весь общий HTML-код, такой как HTML-скелет, Navbar, нижний колонтитул и т. Д. Другие шаблоны могут затем расширить этот базовый шаблон, следовательно, делая наш шаблон более многоразовым. Я создал базовый файл шаблона layout.html Содержать общую структуру шаблона следующим образом.

Layout.html.

{% extends "layout.html" %}
{% block title %}Index{% endblock %}
{% block head %}
  {{ super() }}
  
{% endblock %}
{% block content %}
  

About

Hi. I am Arindam. I love building User Interfaces. I am currently learning Python and created this simple blog using the Flask web development framework. {% endblock %}

Может быть создан форматный блок шаблона, и код для этого блока должен быть размещен в {% блокировать block_name%} {% Endblock%} {% Block%} Сообщает шаблон двигатель, что шаблон ребенка может переопределять эти части шаблона.

Другие файлы могут затем наследовать этот базовый шаблон, как это:

О.html.

{% extends "layout.html" %}
{% block title %}Index{% endblock %}
{% block head %}
  {{ super() }}
  
{% endblock %}
{% block content %}
  

About

Hi. I am Arindam. I love building User Interfaces. I am currently learning Python and created this simple blog using the Flask web development framework. {% endblock %}

Здесь Super () используется для визуализации содержимого блока, определенного в родительском шаблоне.

Больше на шаблоне с использованием колбы можно найти здесь https://flask.palletsprojects.com/en/1.1.x/patterns/templateinheritance/

Создание страницы не нашел маршрут

В колбе мы можем обрабатывать различные исключения, которые могут произойти при загрузке содержимого с сервера, такого отображения пользовательской страницы 404, когда маршрут не найден, показывающий пользовательскую страницу, когда есть 500 внутренней ошибки сервера и т. Д. Я создал простой not_found.html Файл, который будет отображен, когда маршрут не найден.

not_found.html.

{% extends 'layout.html' %} 
{% block title %}Page Not Found{% endblock %}
{% block content %}
  

Page Not Found

Sorry, this page does not exist! {% endblock %}

server.py

@app.errorhandler(404)
def page_not_found(error):
    return render_template('not_found.html'), 404

Подробнее о обращении об ошибке колба можно найти здесь https://flask.palletsprojects.com/en/1.1.x/patterns/errorPages/

Добавление образцов постов

Для простоты я создал папку постов внутри каталога шаблонов и создал два файла фиктивных постов First-post.html. и Second-Post.html Отказ Тогда я создал [Posts.py] (http://posts.py) Файл Чтобы прочитать все файлы пост и хранить имена файлов в списке, который можно отобразить на домашней странице.

posts.py

import os

def get_all_post_names():
    try:
        post_files = os.listdir('templates/posts')
        post_names = list(map(lambda x: x.split('.')[0], post_files))
        return post_names
    except:
        print('An error occurred while fetching posts')
        return []
{% extends "layout.html" %} 
{% block title %}Index{% endblock %} 
{% block head%}
{{ super() }}
 {% endblock %} 
{% block content %}

Welcome to the Python Blog.

Recent Posts

    {% for post in post_names %}
  • {{post}}
  • {% endfor %}
{% endblock %}

Все заявления Python такие написаны внутри {%%} Блоки в соответствии с синтаксисом шаблона Jinja. Динамические значения размещены с {{}} Отказ Теперь мы сможем увидеть два поста на домашней странице. Теперь на нажатии на пост он должен открыть соответствующую страницу пост. Для этого нам нужно создать маршрут, который динамически обрабатывает пост-страницы.

@app.route('/posts/')
def show_post(post_name):
    return render_template(f'posts/{post_name}.html')

Этот маршрут будет обрабатывать названия страниц и динамически отображать соответствующие страницы.

Создание файла требований .txt

В нашем проекте Python мы можем использовать несколько внешних пакетов. Если мы хотим поделиться этим проектом с кем-то, нам нужно делиться всеми файлами проекта, а также упомянуть все пакеты, которые необходимы для запуска проекта вместе с правильным номером версии. Это не совсем практический подход.

Все установленные зависимости, используемые в проекте, могут быть указаны в одном требования .txt Файл (согласно Конвенции) вместе с их версией, используя эту команду.

$ pip freeze > requirements.txt

Это генерирует требования .txt Файл для проекта. Этот файл можно загрузить в любой репозиторий Git. Когда кто-то загружает проект, им просто нужно запустить PIP Установка -R требование.txt И все зависимости, связанные с проектом, будут установлены с точными версиями автоматически.

Полный код проекта можно найти здесь

использованная литература

Вышеуказанный проект – это очень минутный случай для создания веб-приложений с помощью Python. Я хотел бы перечислить некоторые полезные ссылки на дальнейшую разведку:

Это все на сегодня. Для оставшейся части этой серии я буду кратко изучать продвинутые темы, такие как основы обучения машины и науки о данных с Python.

Иметь отличный!

Оригинал: “https://dev.to/arindamdawn/30-days-of-python-day-24-web-development-extras-4lc2”