Autor Wątek: [Django]Akcja na WWW  (Przeczytany 2023 razy)

Offline Furry

  • Użytkownik
    • DevBlog

# Wrzesień 03, 2011, 15:00:21
Witam, mam pytanie, w jaki sposób tworzone/dodawane są ruchome obiekty w django(np. w grach pisanych w python+django)? Przy wejściu na stronę powiedzmy host/mojastrona/podstrona zwracamy przez funkcję widoku httpResponse, no i ok tylko jak zrobić, żeby np dodamy obrazek <img src .../> to będzie się on ruszał tak jak chcemy? Jak opisać reakcję na np ruch myszy?
Czy macie, jakiś ciekawy tutorial lub przykłady jak coś takiego zrobić? Szukałem w dokumentacji ale jest tylko jak dodawać elementy do strony, a nie jak nimi poruszać itp:/ .

Chyba, że mam błędne założenia i nie da się tego zrobić bez js czy flasha

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline vashpan

  • Użytkownik
    • Strona

# Wrzesień 03, 2011, 15:15:16
Moment - to ty bys chcial ruszac te obrazki po stronie serwera ? W sumie to moze i by sie dalo jakbys odswiezal strone np. 10 razy na sekunde i na serwerze 'updatowal' pozycje obrazka, wysylajac z powrotem do klienta, i w ten sposob "rysowal" :D

Ale opamietajmy sie - od tego wlasnie jest JavaScript. Skrypt ktory moze opisac wyglad dokumentu dynamicznie, po stronie klienta (przegladarki)

Offline Kos

  • Użytkownik
    • kos.gd

# Wrzesień 03, 2011, 15:55:16
No tak, śmiało możemy założyć, że chodzi o samą stronę klienta. Jeśli potrzebujesz komunikację klient<->serwer, to czeka Cię ciut więcej roboty (temat-rzeka).

W każdym razie- poruszanie elementów po stronie klienta jest proste, CSS position: absolute, left:10, right:50 itd... I to potrafi działać naprawdę szybko, a jak jeszcze oszczędzisz sobie pisania i podepniesz gotowe transitions z CSS3, to już cud-miód.

Reakcja na ruch myszy to obsługa eventu mousemove.

Offline Furry

  • Użytkownik
    • DevBlog

# Wrzesień 03, 2011, 21:32:40
dokładnie chodzi mi po stronie klienta i chodzi mi czy JS/Flash jest jedynym rozwiązaniem, czy np. jestem w django w stanie napisać stronę tak, że będzie mi reagowała na ruch myszy. Nie wiem, jakiś argument dla HttpResponse (albo render_response) onMouseMove którym będzie funkcja zmieniająca np pozycje obrazków po stronie klienta. Czy jest to w ogóle możliwe(od strony django rzecz jasna)?

Offline dikamilo

  • Użytkownik
    • blog

# Wrzesień 03, 2011, 23:09:48
Skoro to ma być po stronie klienta to po co tak kombinować ? Renderujesz w widoku szablon html jednym ze sposobów np. render_to_response i w szablonie piszesz kod js od poruszania obrazkami.

Zobacz sobie też dajaxproject.com

Offline Furry

  • Użytkownik
    • DevBlog

# Wrzesień 03, 2011, 23:31:57
no właśnie o to mi chodzi, czy da się ominąć js, bo chciałem to napisać jak najbardziej tylko w python + ew html . Ale skoro się nie da to js sobie użyję, dzięki za info.

Offline vashpan

  • Użytkownik
    • Strona

# Wrzesień 03, 2011, 23:43:36
no właśnie o to mi chodzi, czy da się ominąć js, bo chciałem to napisać jak najbardziej tylko w python + ew html . Ale skoro się nie da to js sobie użyję, dzięki za info.

No ale jak ty to sobie wyobrazasz ? Django i Python dziala tylko po stronie serwera, a to USER rusza myszka na swoim komputerze a nie serwera ;) User ze swojej przegladarki "idzie" pod twoj adres, serwer generuje dla niego strone w html+javascript - strona ta otwiera sie na jego przegladarce. tyle.

Uzyj po prostu JavaScript - bo do tego jest. Jezeli planujesz cos wiecej z webdevem to od niej nie uciekniesz. Jezeli interesuje cie bardziej scisla komunikacja user-serwer, bardizej interaktywnie iasynchronicznie - wtedy zainteresuj sie AJAX'em

Offline Kos

  • Użytkownik
    • kos.gd

# Wrzesień 03, 2011, 23:44:09
Da się wszystko robić po stronie serwera. Wystarczy zrobić "dumb terminal" i streamować gotowe video z grafiką :)

Offline vashpan

  • Użytkownik
    • Strona

# Wrzesień 03, 2011, 23:45:00
Da się wszystko robić po stronie serwera. Wystarczy zrobić "dumb terminal" i streamować gotowe video z grafiką :)
Oj tam oj tam ;) Pewnie ze sie wszystko da, kwestia czasu i zasobow przeznaczonych na takie rozwiazanie.