Uruchomiłem aplikację w Google App Engine zaraz po jej pojawieniu się, aby pobawić się technologią i pracować nad projektem zwierzaka, o którym myślałem od dawna, ale nigdy nie udało mi się rozpocząć. Rezultatem jest BowlSK . Jednak wraz z rozwojem i dodawaniem nowych funkcji porządkowanie stało się naprawdę trudne - głównie ze względu na fakt, że jest to mój pierwszy projekt w Pythonie i nie wiedziałem o nim nic, dopóki nie zacząłem pracować.
Co ja mam:
- Poziom główny zawiera:
- wszystkie pliki .py (nie wiedziałem, jak sprawić, by pakiety działały)
- wszystkie szablony .html dla stron głównych
- Podkatalogi:
- osobne foldery na css, images, js itp.
- foldery zawierające szablony .html dla adresów URL typu subdirecty
Przykład:
http://www.bowlsk.com/ mapuje na HomePage (pakiet domyślny), szablon pod adresem „index.html”
http://www.bowlsk.com/games/view-series.html?series=7130 mapuje na ViewSeriesPage (ponownie pakiet domyślny), szablon w „games / view-series.html”
To jest paskudne. Jak przeprowadzić restrukturyzację? Miałem 2 pomysły:
Główny folder zawierający: appdef, indexes, main.py?
- Podfolder na kod. Czy to musi być moja pierwsza paczka?
- Podfolder na szablony. Heirarchia folderów będzie odpowiadać hierarchii pakietów
- Indywidualne podfoldery dla css, obrazów, js itp.
Główny folder zawierający appdef, indeksy, main.py?
- Podfolder na kod + szablony. W ten sposób mam klasę handlera tuż obok szablonu, ponieważ na tym etapie dodam wiele funkcji, więc modyfikacje jednej oznaczają modyfikacje drugiej. Ponownie, czy nazwa tego folderu musi być pierwszą nazwą pakietu dla moich zajęć? Chciałbym, aby folder był „src”, ale nie chcę, aby moje klasy to „src.WhthingPage”
Czy istnieje najlepsza praktyka? Mając Django 1.0 na horyzoncie, czy jest coś, co mogę teraz zrobić, aby poprawić moją zdolność do integracji z nim, gdy stanie się on oficjalnym silnikiem szablonów GAE? Zacząłbym po prostu wypróbowywać te rzeczy i zobaczyć, co wydaje się lepsze, ale obsługa refaktoryzacji pyDev nie wydaje się zbyt dobrze radzić sobie z przenoszeniem pakietów, więc prawdopodobnie nietrywialnym zadaniem będzie ponowne uruchomienie tego wszystkiego.
źródło
Mój zwykły układ wygląda mniej więcej tak:
__init__.py
- wspólna funkcjonalność, w tym klasa bazowa modułu obsługi żądańMogę podać przykłady tego, jak wyglądają moje app.yaml, request.py, lib / init .py i przykładowe kontrolery, jeśli nie jest to jasne.
źródło
Zaimplementowałem dzisiaj standardowy szablon silnika aplikacji Google i sprawdziłem go na githubie. Jest to zgodne z wytycznymi opisanymi powyżej przez Nicka Johnsona (który wcześniej pracował dla Google).
Skorzystaj z tego linku gae-boilerplate
źródło
Myślę, że pierwsza opcja jest uważana za najlepszą praktykę. I uczyń folder z kodem swoim pierwszym pakietem. Projekt Rietveld opracowany przez Guido van Rossuma to bardzo dobry model do nauki. Spójrz na to: http://code.google.com/p/rietveld
Jeśli chodzi o Django 1.0, sugeruję, abyś zaczął używać kodu trunkingowego Django zamiast GAE wbudowanego w port django. Ponownie zobacz, jak to się robi w Rietveld.
źródło
Lubię webpy, więc zaadaptowałem go jako szablonowy framework w Google App Engine.
Moje foldery z pakietami są zwykle zorganizowane w następujący sposób:
Oto przykład.
źródło
Nie jestem do końca na bieżąco z najnowszymi najlepszymi praktykami, i tak dalej, jeśli chodzi o układ kodu, ale kiedy robiłem moją pierwszą aplikację GAE, użyłem czegoś w drugiej opcji, w której kod i szablony są obok siebie.
Były ku temu dwa powody - po pierwsze, trzymał kod i szablon w pobliżu, a po drugie miałem układ katalogów naśladujący układ strony internetowej - co (dla mnie) było trochę łatwiejsze do zapamiętania, gdzie wszystko się znajduje.
źródło