@Honza, @starenka Ahoj chlapi, především díky za vlídné a věcné odpovědi, čekal jsem spíš, že po této otázce už na mě někdo vlítne a pěkně mi vynadá.
Jo, máte přesně pravdu, bylo by to asi lepší (získat to v umístění projektu a předat to nějakým parametrem), než účelu nepřiměřené úsilí, co se s tím snažím dělat. Přidám nějakou story, jak jsem se do té situace dostal, snad z toho bude něco jasnější, i když osobně jsem nad svým postupem dost na rozpacích: 1. Nejdřív jsem copy/pastoval ze starého projektu pro vytvoření nového, jak se to asi běžně dělá. 2. Pak jsem začal myslet na nějaký reuse, tak jsem si udělal jednu django aplikaci na věci, které by asi byly potřebné ve 2+ projektech. 3. Pak mě začalo štvát, že tu aplikaci mám pod jednotlivými projekty, takže když ji někde změním, neměl bych zapomenout jít i do těch ostatních projektů a udělat v ní stejné změny i tam. 4. Pak jsem tu django aplikaci obecností odkopíroval do adresáře mimo, udělal jí vlastní git repozitář, a instaluji ji nějak jako `poetry add ../../obecna` 5. Pak mě začalo štvát, že běžná django settings mají tak 200 řádek kódu, stejně jsou vždycky skoro stejná, a když tam něco vylepším, tak zas abych šel po projektech a implementoval vylepšení i do ostatních (a nebo v tom měl chaos). 6. Pak jsem si zkusil jakési django-split-settings, rozdělil ten mega-file na 10 malých (vypadá to dobře, ale o vhodnosti tohoto mám velké pochyby, protože to už jsme možná trochu u zacházení s jmennými prostory jako ve Web2py). 7. Pak jsem většinu nastavení přepsal tak, aby byla obecná, bez závislostí na projektu. Příklad: Nemám důvod, proč by se moje postgres databáze neměla jmenovat stejně jako projekt. Tak proč psát do nastavení natvrdo jméno databáze? - toto je další věc, kterou na Djangu nemám rád, že když dělá startproject, tak rozkopíruje po x souborech na y míst jméno projektu jako string. 8. Pak jsem (ze stejných důvodů jako výše) to odsunul mimo ty mé projekty. Takže: mohl bych si to nastavit v projektech a předat jako parametr. Ale čím míň toho zůstane customizovaného pro projekty, tím lépe. Navíc to django-split-settings se volá pomocí jakýchsi funkcí include() a optional() a nejsem si tak úplně jistý, jak snadno tam jdou parametry předávat. Dne pondělí 22. února 2021 v 14:58:03 UTC+1 uživatel MirekZv napsal: > @John > > Jo, zase jsem horlivější než je vhodné. > Nemyslel jsem to tak, že já sám chci mít na stagingu/produkci/.. různá > prostředí. > Myslel jsem to tak, že kdyby se to někdy z nějakých nyní neznámých důvodů > ocitlo pod jiným prostředím (např. na různých cloudech), aby to chodilo. > Čili přehnaná snaha o obecnost, která se nakonec skoro vždycky spíš vymstí. > > Jinak vyvíjím i nasazuji na poslední Debian, takže vlastně skoro identické > prostředí na vývoji i produkci. > Díky tedy za doporučení dockeru, já už jsem si s ním kdysi pohrával, ale > zjistil jsem, že pro laika to zas tak ultrasnadné není, > pak se mi zdá, že to docela žere místo na disku (zvlášť když tam zapomeneš > něco nesmazaného z předchozích pokusů), což při nasazování na > (cizí=veřejný) virtuální server je dost zásadní, > a pak, když to jedu vše na Debianu, tak by ten přínos zas tak zásadní > nebyl. > Takže Docker je zatím odložen. > > Dne pátek 19. února 2021 v 22:59:35 UTC+1 uživatel starenka napsal: > >> A kdyz to teda volas z toho prokektu, proc to ty fci v tom modulu >> nepredas jako arg? >> >> >> On Fri, Feb 19, 2021, 22:51 Jan Bednařík <jan.be...@gmail.com> wrote: >> >>> A nemůžeš mít název toho projektu jako konstantu přímo v settings? >>> Zjišťovat to z názvu adresáře mi přijde příliš křehké. >>> >>> A Sites znáš? to je takovej dobrej způsob, jak pracovat s více projekty >>> / instalacemi / weby v jedné code base: >>> https://docs.djangoproject.com/en/3.1/ref/contrib/sites/ >>> >>> Honza >>> >>> pá 19. 2. 2021 v 19:50 odesílatel Jan Walter <jnw...@gmail.com> napsal: >>> >>>> Asi nejsem sto se přesně naladit na charakter Tvého problému, ale pokud >>>> mohu poradit obecně, snažil bych se vystříhat tomu, aby "bylo na produkci >>>> pokaždé něco jinak". >>>> >>>> My v partě máme oblíbený docker, což je technologie využitelná např. na >>>> to, aby bylo, pokud možno, "všude všechno v základu stejně". Doporučuji >>>> Tvé >>>> pozornosti. >>>> >>>> John >>>> >>>> On Fri, 19 Feb 2021, 19:32 MirekZv, <mirek....@gmail.com> wrote: >>>> >>>>> Běží mi kód ve stacku projektu, >>>>> ale dotyčný soubor se nachází mimo adresář projektu. >>>>> Jak bych zjistil jméno projektu? >>>>> >>>>> Abych to trochu vysvětlil: >>>>> V běžných django settings se řeší přesně toto, co potřebuju, třeba >>>>> nějak přibližně takto: >>>>> BASE_DIR = Path(__file__).resolve().parent.parent >>>>> PROJECT_NAME = BASE_DIR.name >>>>> >>>>> Potřebuju totéž zjistit v souboru, který není v BASE_DIR. >>>>> A to tak, že nechci nic nastavovat nikde v souborech pod BASE_DIR. >>>>> >>>>> Napadají mě 2 možnosti: >>>>> - zjistit to nějak z inspect.stack() --ale nevím, jak to udělat dost >>>>> bezpečně >>>>> - vzít jenom os.getcwd() --za předpokladu, že mám úplně standardní >>>>> projekt, se stejným jménem rootu i adresáře projektu >>>>> >>>>> Zatím jsem se spokojil s tím posledním. >>>>> Myslíte, že by na to mohl být spoleh ve všech variantách na produkci? >>>>> >>>>> Alternativně: Dá se nějak snadno zjistit z kódu settings file (protože >>>>> ten mám pod projektem; nebo prostě jakýkoli file, který je bezpečně pod >>>>> adresářem projektu (např. ve stacku mám jako první manage.py, jenže to >>>>> asi >>>>> na produkci bude pokaždé jinak). >>>>> >>>>> Díky, tedy kdyby někdo věděl. >>>>> >>>>> -- >>>>> -- >>>>> E-mailová skupina djan...@googlegroups.com >>>>> Správa: http://groups.google.cz/group/django-cs >>>>> --- >>>>> Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny >>>>> „django-cs“ ve Skupinách Google. >>>>> Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, >>>>> zašlete e-mail na adresu django-cs+...@googlegroups.com. >>>>> Chcete-li tuto diskusi zobrazit na webu, navštivte >>>>> https://groups.google.com/d/msgid/django-cs/2c569772-cc17-437d-80ec-0411a0207c33n%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/django-cs/2c569772-cc17-437d-80ec-0411a0207c33n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>>> -- >>>> E-mailová skupina djan...@googlegroups.com >>>> Správa: http://groups.google.cz/group/django-cs >>>> --- >>>> Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny >>>> „django-cs“ ve Skupinách Google. >>>> Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, >>>> zašlete e-mail na adresu django-cs+...@googlegroups.com. >>>> Chcete-li tuto diskusi zobrazit na webu, navštivte >>>> https://groups.google.com/d/msgid/django-cs/CAK-vJU%3D6zQW99QbNdrXSC7jGxNVxEB7y39M%2BDYUi%3DJQMG_MwLA%40mail.gmail.com >>>> >>>> <https://groups.google.com/d/msgid/django-cs/CAK-vJU%3D6zQW99QbNdrXSC7jGxNVxEB7y39M%2BDYUi%3DJQMG_MwLA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >>> -- >>> E-mailová skupina djan...@googlegroups.com >>> Správa: http://groups.google.cz/group/django-cs >>> --- >>> Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny >>> „django-cs“ ve Skupinách Google. >>> Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, >>> zašlete e-mail na adresu django-cs+...@googlegroups.com. >>> >> Chcete-li tuto diskusi zobrazit na webu, navštivte >>> https://groups.google.com/d/msgid/django-cs/CAMmgUkNE8pvmhtkfV2VaN_cmzdB1WytZSMev-tbW9KyuBbOEog%40mail.gmail.com >>> >>> <https://groups.google.com/d/msgid/django-cs/CAMmgUkNE8pvmhtkfV2VaN_cmzdB1WytZSMev-tbW9KyuBbOEog%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- -- E-mailová skupina django-cs@googlegroups.com Správa: http://groups.google.cz/group/django-cs --- Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google. Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com. Chcete-li zobrazit tuto diskusi na webu, navštivte https://groups.google.com/d/msgid/django-cs/568bf422-422d-4475-86cc-235f6e78a81fn%40googlegroups.com.