2011-09-01 17 views
11

Powiedz, że masz istniejącą witrynę Django opartą na bazach danych. Coś prostego, jak pojedynczy model zawierający zapis dla każdej mniej ważnej drużyny baseballowej. Dostęp do modelu odbywa się za pomocą jednego widoku, który zawiera listę wszystkich drużyn, a drugi, który akceptuje pocisk, a następnie tworzy stronę szczegółów na temat tego zespołu.Czy istnieją dobre opcje wypalania witryny Django jako pliki statyczne?

Czy istnieje dobry sposób na przekonwertowanie aplikacji na stos wypalanych płaskich plików, aby mogła być obsługiwana przez statyczną usługę plików, taką jak Amazon S3?

Zrobiłem zabawę z Hyde, ale nie jest dla mnie jasne, w jaki sposób odnosi się do istniejącej strony wspieranej przez bazę danych.

Każda rada byłaby bardzo doceniana. Z góry dziękuję.

Odpowiedz

0

Pytasz o dynamiczną stronę do hostowania w środowisku statycznym, co jest niemożliwe. Jedynym sposobem jest wyeksportowanie wszystkich plików, umieszczenie ich w statycznym serwerze. Możesz to zrobić za pomocą wget, to skopiuje wszystkie pliki i przekonwertuje je do html.

Jednym ze sposobów rozwiązania tego problemu jest to, że może on tworzyć tylko pliki html, jeśli istnieją linki do stron, np. formularze wyszukiwania itp. nie będzie pracowało pod, obsługa linków JavaScript na podstawie może nie działać.

+0

Dzięki. Całkowicie słyszę cię na temat dynamicznego problemu v. Static. W moim fantazjowym złudzeniu istnieje sprytny pakiet Pythona, który przejdzie przez twoją bazę danych i wypali strony jedna po drugiej, jak wget od wewnątrz. Chociaż prawdopodobnie żartuję sobie i po prostu muszę ugryźć kulę i zmielić ją w stylu wget. – palewire

+0

W środowiskach statycznych nie można * uruchamiać * żadnej aplikacji. Ale dopóki nie aktualizujesz się dość regularnie, 'wget' dobrze poradzi sobie z sytuacją, a jeśli dokonasz aktualizacji, musisz wget do ciebie dynamiczny serwer (który jest lokalny, chyba), a następnie zaktualizować pliki. –

1

Mam podobną konfigurację przy użyciu Django, ale na GAE. Stworzyłem skrypt budujący, którego używam do budowania moich statycznych plików HTML. Ponieważ wersja szablonów Django GAE jest nieco inna, może to wymagać pewnych testów.

Ale w zasadzie można zrobić coś podobnego

from django.template import Template, Context 
from django.template.loader import get_template 

t = get_template('template1.html') #Need to verify this. GAE template allows me to just call template.render(path, context). Not sure about pure Django templates 
c = Context({ 'variable' : 'value'}) 
with open("file1.html", "w") as f: 
    f.write(t.render(c)) #This works for me, but if this doesn't in pure Django, try render_to_string 

HTH

+0

Dzięki za cynk. A jak wdrożyć? Czy piszesz trochę kodu, który zapętla się przez bazę danych i uruchamia powyższy kod przed każdym wpisem - a następnie wypychasz wynik? – palewire

+0

Tak, mój skrypt budujący zasadniczo pobiera zawartość z niektórych plików, łączy je w szablony i tworzy statyczny kod HTML. Nie ustawiłem go automatycznie, ponieważ nie zmieniam tam zbyt często, ale to powinno być dość łatwe do zrobienia. – arunkumar

+0

Okay, ten rodzaj "niestandardowego" skryptu do budowania jest w pewnym sensie miejscem, w którym zawsze myślałem, że będę musiał skończyć, ale to jest świetne dla POV innych. I zawsze jest część mnie, która myśli, że jeśli po prostu zapytam Internet, jakiś niegodziwy mistrz Pythona może mieć rozwiązanie automagiczne czekające. – palewire

2

Rozumiem intencje, ale każdy przyzwoity Ramy te dni oferuje jakąś caching mecanism że złagodzić bóle dynamicznej zawartości. Przy poprawnie zaimplementowanej pamięci podręcznej różnica między statyczną a dynamiczną będzie banalna. Zaufaj mi.

Szczęśliwe kodowanie, przyjacielu.

+2

Dzięki. Całkowicie zgadzam się, że buforowanie jest Jednokrotną Ścieżką Oświecenia, jeśli chodzi o wdrażanie aplikacji opartych na bazach danych. W moim obecnym przypadku, tak naprawdę myślę raczej o koszcie niż obciążeniu. Po prostu taniej jest wyświetlać płaskie pliki i chciałbym to wykorzystać. – palewire

0

Nie znam niczego, co spowoduje konwersję istniejącej witryny Django na statyczną stronę html. Warto przyjrzeć się pakietowi nowych dostawców PaaS django/python. Witryna taka jak ta powinna być łatwa do uruchomienia na jednej z tych platform i powinna być dość tania z miesiąca na miesiąc.

Niektórzy dostawcy może chcesz kasy to:

+0

Dzięki za porady. Właściwie uważam pliki statyczne za alternatywę dla stron PaaS. Korzystam głównie z Google App Engine, ale staram się obniżyć koszty przed nadchodzącym przejściem na znacznie droższy harmonogram cenowy. – palewire

2

nowy został właśnie ogłoszony, choć istniała i była używana przez jego autor od dłuższego czasu:

django-medusa.

Nie próbowałem jeszcze jej używać, ale na pewno wygląda dobrze: będę!

Powiązane problemy