GithubHelp home page GithubHelp logo

antonshbk / django-portal-docker Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 3.09 MB

The portal was written to develop my experience and skills

License: Apache License 2.0

Dockerfile 1.10% Python 74.20% Jupyter Notebook 9.76% HTML 14.91% Shell 0.02%

django-portal-docker's Introduction

Мой Django проект портфолио

Проект пример. В данном проекте используюся различные технологии и методы:

  • PosgresQL
  • PgAdmin (ситуативно)
  • Python Debug
  • Jupyter
  • McDocs
  • Средства индексации страниц SEO (robots.txt, sitemap)
  • Nginx
  • Docker Compose
  • Boostrap
  • Celery
  • Celery-Beat
  • Constance
  • Coverage

Что нужно изучить

  • Продалжить смотреть уроки Бовсуновского
  • Изучить основы тестирования в pytests или тесты встроеннные в Django
  • Изучить и разобраться что такое "валидатор" в Django
  • Функционирование React и работа с ним
  • Стили и работа в Boostrap
  • Подумать над использованием Celer (celery-beat для админки)
  • Разобраться с логированием (хотя бы со станддартым)
  • Написать страничку для одного поста, а также представления для редактирования и удаления
  • Добавить локализацию .po
  • Разобраться с модулем constance
  • Сделать номрмальный интерфейс, разобраться со стилями, а лучше написать своё окно регистрацции и тд.
  • ~~Рассмотерть возможность перехода на poetry вместое pip ~~
  • Создать документацию для перевода

Сделать сейчас:

  • форму авторизации
  • форму новой статьи

Разработка:

Разработка: включает контейнер с функционирующим сервером Django и сервером быза данных PostgesQL.

docker-compose -f docker-compose-dev.yml build
docker-compose -f docker-compose-dev.yml up

Разработка с отладкой в ручном режими или с испольщованием VS Code:

Разработка с отладкой в ручном режими или с испольщованием VS Code: включает контейер с севером Django, базой данных PosgresQL, сервером Jupyter.

docker-compose -f docker-compose-dev-debug.yml build
docker-compose -f docker-compose-dev-debug.yml up

Продакшн:

Производство: включает контейнер сервер Gunicorn, базой данных PosgresQL и сервер для обратного проксирвоания Nginx.

docker-compose -f docker-compose-prod.yml build
docker-compose -f docker-compose-prod-debug.yml up

Пояснение:

Я постарался что бы в процессе сборки не возникало проблем однако это не исключено, проблемы могут возникнуть если на одной машине будут смонитрованы разные версии контейнеров (prod, dev). Также проблемы могут быть из-за не синхронного запуска контейнеров, я предусмотерл ожидение контейнеров предд запуском, вы может изменит этот параметр (sleep 5s).

Параметры конфигурации вынесены в файл .env и db.env. Зависимости python вынесены в файл comment.txt development.txt и production.txt .

(RUS) Если необходимы дополнительные команды при сборке образа, используйте файл entrypoint.sh и entrypoint.prod.sh. Эти баш команды выаолянют в момент создания образа (build).

Подключиться к оболчке контейнера app:

docker exec -it django-portal-app sh

Подключиться к порталу http://127.0.0.1:8000

Поддключиться к отладке Jupyter: http://127.0.0.1:8888/tree?

Подключиться к документации MkDocs: http://localhost:8200/

Индексация страниц

Файл для индексации поисковыми системами находится templates/portal/robots.txt

Создать файл robots.txt в директории templates с содержанием:

User-agent: *
Disallow: /admin/
Disallow: /accounts/

Более подробно можно онакомиться в документации

Добавить urls:

from django.urls import re_path
from django.views.generic import TemplateView

urlpatterns += [
    re_path(r'^robots\.txt$',
        TemplateView.as_view(template_name = 'robots.txt',
                             content_type='text/plain')),]

Что бы проверить работоспособность перейдите по адресу:

http://127.0.0.1:8000/robots.txt

Документация

Карта сайта

Динамичсекая карта сайта для поисковых сервисов, создана на базе встроенного функционала "из коробки" Django4 4.2

Основное:

Добавить в INSTALD_APPS:

...
django.contrib.sites
django.contrib.sitemaps

Создать файл sitemaps.py (я создал в корневом катологе portal, но это необязательно) с содержанием примерно:

from django.contrib.sitemaps import Sitemap
from blog.models import Post


class PortalSitemap(Sitemap):
    changefreq = "weekly" # переодичность проверки
    priority = 0.9 # приоритет

    def items(self): # объекты, лучше конечно обратиться к документации
        return Post.objects.all()

    def lastmod(self, obj):
        # if  object have pub_date
        return obj.date_created

Настроить urls:

from django.urls import re_path
from django.contrib.sitemaps.views import sitemap

from .sitemaps import PortalSitemap
  
sitemaps = {'exhibist': PortalSitemap}
urlpatterns += [
    re_path(r'^sitemap\.xml$',
            sitemap, {'sitemaps': sitemaps},
            name='django.contrib.sitemaps.views.sitemap'),]

Убедитесь что у рассматриваемых моделей корректно задан get_absolute_url() (я долго провозился в поисках ошибок).

Что бы проверить работоспособность перейдите по адресу:

http://127.0.0.1:8000/sitemap.xml

Документация

Видео

Suprvisor

Документация

django-portal-docker's People

Contributors

antonshbk avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.