Adaptiware Logo
DjangoPython

DjangoCon 2022 Porto! Časť 1

DavidDavid
4 min read
DjangoCon 2022 Porto! Časť 1

Predchádzajúce roky boli komplikované kvôli pandémii COVID-19, takže mnohé konferencie sa počas týchto ťažkých čias konali len online. Našťastie, ja a môj priateľ Marek sme mali možnosť zúčastniť sa DjangoCon 2022. DjangoCon sa konal v Portugalsku, čo bola pre nás oboch ďalšia motivácia navštíviť túto krásnu krajinu, keďže sme tam študovali.

Týmto blogom by sme chceli stručne poukázať na prednášky a informácie, ktoré nás zaujali najviac.

Deň 1

Prvý deň bol veľmi zaujímavý, stretli sme mnohých podobne zmýšľajúcich ľudí, ktorí používali rovnakú technológiu na vývoj. Takže sme s nimi mali veľa spoločných tém. Skoro ráno sme sa zaregistrovali na prednášky, ktoré pre nás boli pripravené a začali sa takmer okamžite bez akýchkoľvek prestávok.

Skryté klenoty Django Admin. Časť 1.

Prednášajúci: Maxim Danilov

Musíme povedať, že Django admin je naozaj mocný nástroj. Maxim Danilov rozprával o vylepšeniach, ktoré môžu byť použité na prácu s django admin, aby nám práca s týmto nástrojom bola jednoduchšia.

ModelAdmin auto registrácia

Je možné prepísať takmer všetky časti django admin. Model Admin auto registrácia je zaujímavá v tom, že nemusíte registrovať každý admin časť manuálne, takže je to tiež šetrí čas.

Python
from django.contrib.admin import apps as adminApps, sites

class AdminConfig(adminApps.AdminConfig):
    default_site = 'admins.admin.WpAdminSite'

    def ready(self, *args, **kwargs):
        super().ready(*args, **kwargs)
        site = sites.site  # changed with multiple admin sites
        site._register = {}  # remove old registrations

        for config in apps.get_app_configs():
            admins = getattr(config.module, 'admin', None)

            for model in config.get_models():  # excluded auto_created and swapped
                model_admin = getattr(admins, f'{model.__name__}Admin', None)

                if model_admin and not site.is_registered(model):
                    site.register(model, model_admin)

S vlastnou autoregistry admin konfiguráciou nemusíte registrovať každý model.

Namiesto tohto:

Python
from django.contrib.admin import ModelAdmin
from core.models import Shop

@admin.register(Shop)
class ShipAdmin(ModelAdmin):
    list_display = ('title',)

Admin súbor bude vyzerať takto:

Python
from django.contrib.admin import ModelAdmin

class ShipAdmin(ModelAdmin):
    list_display = ('title',)

Django admin API

Aby ste sa vyhli manuálnemu vytváraniu API pre jednoduché stránky, je možné vrátiť django admin odpoveď ako json.

Jednoduché riešenie:

Python
class JsonizedAdminSite(AdminSite):

    def index(self, request, *args, **kwargs):
        response = super().index(request, *args, **kwargs)
        return JsonResponse(response.context_data,
                            status=response.status_code,
                            encoder=MyJsonEncoder)

Admin index kontext stránky bol vrátený ako json. Maxim tiež zdieľal riešenie na prepísanie celého model adminu, aby bol použitý ako API.

Maxim rozprával o ďalších zaujímavých a užitočných tipoch ako:

  • Ako zoradiť admin aplikácie na dashboarde
  • Ako pracovať s auto registráciou viacerých site adminov
  • Ako zrýchliť django admin a zabrániť volaniu rovnakých metód viackrát za jeden request

Video z prezentácie: https://youtu.be/HJfPkbzcCJQ

Kagi - Viacfaktorová autentifikácia

Prednášajúci: Justin Mayer

Naozaj výkonný balíček pre viacfaktorovú autentifikáciu bol spomenutý Justinom Mayerom počas jeho zaujímavej prezentácie. Kagi je užitočný nástroj na pridanie viacfaktorovej autentifikácie (MFA) do Django v priebehu niekoľkých minút. Prezentoval rýchle riešenie na inštaláciu a konfiguráciu kagi pre nový projekt.

Video: https://youtu.be/aannTf_z1XU

Django Ninja

Prednášajúci: Vitaliy Kucheryaviy

Django Ninja vyzerá byť extrémne zaujímavý Django rest framework, ktorý ma prekvapil rýchlosťou, integráciou a peknou dokumentáciou. Osobne som ho ešte netestoval. Ale počiatočná implementácia, výsledky testov a porovnanie s ostatnými rest frameworkmi, ktoré boli prezentované počas prezentácie, boli úžasné.

Django Ninja BenchmarkDjango Ninja Benchmark

Ako môžete vidieť z porovnania, vyzerá to, že je oveľa rýchlejší ako Django Rest Framework alebo Flask+marshmallow, takže by som ho naozaj rád otestoval a videl, aký je výkonný.

Video: https://youtu.be/zpR1QCLBpIA

Deň 2

Lepšia správa i18n a PO súborov

Prednášajúci: Felix Mino

Django internacionalizačný proces môže byť niekedy naozaj ťažko udržiavateľný, pretože PO súbory, ktoré sa používajú na preklad v Django, môžu dosiahnuť obrovskú veľkosť. Takže môže byť ťažké alebo môže trvať dlho preložiť väčšie stránky. Felix Mino nám povedal o tom, ako standardizovať proces prekladu stránok a ako sa vyhnúť veľkým nečitateľným súborom. Okrem toho nám ponúkol oveľa viac informácií vo svojej prezentácii.

Záver

Prvé dva dni DjangoCon 2022 boli plné cenných poznatkov a praktických tipov. Od Django admin optimalizácií až po moderné REST framework alternatívy, konferencia poskytla vynikajúce príležitosti na učenie. Zostaňte naladení na Časť 2, kde pokryjeme ďalšie vzrušujúce prezentácie zo zostávajúcich dní!

#django#python#konferencia#djangocon#porto
David

David

Full-Stack Developer at Adaptiware