@netxman: a co chcesz zrobić? coś większego z CI/CD czy mały serwis na jednym serwerze?

Opcji jest bardzo dużo (https://news.ycombinator.com/item?id=13540952). Ja w zależności od projektu używam:

https://circleci.com/integrations/docker/ - build, testowanie, upload obrazów do docker hub, deploy
https://cloud.google.com/container-engine/
https://kubernetes.io
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.html
czasami https://convox.com lub https://www.wercker.com

Ale możesz też uruchamiać przez docker-compose (https://docs.docker.com/compose/production/) jak masz tylko jeden serwer i zautomatyzować wszystko przez circleci.
@IsambardKingdomBrunel: Jako backendowiec odpowiadam -> w robocie robię system dla eeee... bardzo znaczącej rynkowo wielkiej instytucji finansowej. Mnie interesuje API. Przyjdzie mi takie zapytanie -> obsłuż je tak i tak. Jak ja zrobię dobrze, to generalnie nie obchodzi mnie frontend. Od tego są inni ludzie.
Dzisiaj w Packtcie za darmo:

Django By Example

Create your own line of successful web applications with Django

Learn Django by building four fully-functional, real-world web applications from scratch

Develop powerful web applications quickly using the best coding practices

Integrate other technologies into your application with clear, step-by-step explanations and comprehensive example code


https://www.packtpub.com/packt/offers/free-learning

#packtpub #piwniczaknews #django
piwniczak - Dzisiaj w Packtcie za darmo:

Django By Example

 Create your own line...

źródło: comment_IE4IhyhKYc1VaYwOg1uE3CvyCUT7lYw9.jpg

Pobierz
#naukaprogramowania #python #django

Mój problem: stworzyłem pierwszy projekt, potem go wywaliłem z dysku, stworzyłem nowy. Chcę załadować serwer na kompie i przeglądarka mówi że nie ma takiej strony (i podaje brak apek z usuniętego projektu). Serwer w powershelu załadowany ten właściwy. Coś z przeglądarką?

i swoją drogą nie macie jakiś dobrych kursów czegokolwiek? bo tak jak podstawy pythopna weszły mi gładko, tak z django się męczę.
Jak to jest z pobieraniem (a raczej wysyłaniem do klienta) pliku w Django? Jest return serve, ale w większości przykładów znajduję informacje, żeby tego nie stosować na serwerach produkcyjnych. Dlaczego? Polecają wszędzie użycie funkcji webservera do tego, ale żeby to było skalowalne to też chyba kiepsko, bo trzeba pisać odpowiednie funkcje oddzielnie dla nginxa, apache, lighttp, litespeeda, etc?
Dodatkowe pytanie: jeśli nie chcę by użytkownik mógł poznać bezpośredni link do pobieranego pliku
Sto lat po fakcie, ale w/e

Jest return serve, ale w większości przykładów znajduję informacje, żeby tego nie stosować na serwerach produkcyjnych. Dlaczego?


@drakerc: Masz limit połączeń HTTP które w danej chwili może sensownie obsłużyć Django. W 99% nawet niski limit nie jest problemem, bo pojedyncze połączenia trwają ułamki sekundy. Kiedy wysyłasz userowi plik przez Django, tworzysz połączenie które może trwać bardzo długo. Jeśli pobieranie plików jest "standardową funkcją" twojej aplikacji,
@drakerc jeśli to ma być tylko pobieranie kilku plików jako jeden, to bym wyłączył kompresję i tylko archiwizował te pliki do jednego + zapisanie gotowej paczki na później.

Nie jestem też pewien ale zobaczyłbym też czy wywołanie programu zip przez subprocess.call() nie byłoby szybsze, ale tutaj wracamy do tematu zapychania wątku HTTP połączeniami.

Imho taka kompresja powinna działać na innym wątku via np. celery a frontend wyświetlał by tylko userowi JS'a który
Chcę zrobić mały projekt w #django i utknąłem.

Prosta stronka.
Dwa widoki.
Na pierwszym input text z przyciskiem submit (zrobiłem formularz i widok jest kompletny).
Na drugim wynik wyszukiwania.

Problem w tym, że ma to być połączone z bazą danych, a tekst, który wpisuje się w input field ma być filtrem do zapytania bazy danych (cos a'la: Tabela.objects.all().filter(kolumna=TUTAJTOCOWPISZEUZYTKOWNIK).
Podpiąłem już bazę danych w django.

Nie wiem teraz jak
@morsik: Tak, mniej wiecej o to chodzi. Słabo u mnie z opisami. ( ͡° ͜ʖ ͡°)

Czyli pierwszy widok to po prostu render? Ok, ale jak przekazać to co wpisał użytkownik w pierwszym widoku, do drugiego widoku i wykonać tam zapytanie do bazy?

@Masterczulki dzięki będę próbować też w ten sposób
Potrzebuję przechowywać cenę produktu w kilku walutach na raz.
W formularzu dodawania produktu użytkownik wybiera jakąkolwiek walutę np. EUR, następnie podczas zapisywania wartość powinna być przeliczana również na pozostałe waluty czyli USD i FCH. Jak to zaprojektować w bazie danych?

Myślałem o tabeli typu:

ValueCurrency(models.Model):
eur = DecimalField()
usd = DecimalField()
fch = DecimalField()

Product(models.Model)
name = CharField()
value = ForeignKey(ValueCurrency)

Następnie nadpisując Product.save() przeliczać odpowiednio na inne waluty. Ma ktoś lepszy
@netxman: Alternatywą jest redundancja danych, lepiej (o ile nie jest to uzasadnione jakimiś istotnymi względami) jednak trzymać tabelkę z kursami (na dzień, na okres - jak potrzeba). Często jest tak, że obowiązuje jakiś ustalony kurs przez pewien okres (np. producent albo importer ustala). Zaraz mogą się też pojawić pola z ceną brutto, netto (te akurat oddzielnie najczęściej) i inne i zaczynają się schody (tu zapomnisz dodać pola, tu uzupełnić je wartością).
Robię sobie w Django.

robię template dla strony

moja_strona.pl/XXX/strona/N
Gdzie
· XXX może być różne, ale wszystkie są obsługiwane przez ten sam template
· N jest numerem strony

W urlpatterns mam:

url(r'^XXX1/strona/(?P[1-9]+[0-9]*)/$', X1.as_view())
url(r'^XXX2/strona/(?P[1-9]+[0-9]*)/$', X2.as_view())
url(r'^XXX3/strona/(?P[1-9]+[0-9]*)/$', X3.as_view())
I chcę umieścić na stronie guzik, który będzie zmieniał N na M.
Gdy robię
Jaki mam podać adres, aby to poprawnie działało? Gdyby XXX było stałe to bym wpisał cały adres moja_strona.pl/XXX/strona/M,
@Romantyczny_widelec: nie ma za co, ja też się dopiero uczę i nie ogarniam jeszcze wszystkiego dobrze, pewnie jest jakieś lepsze rozwiązanie :) możesz pokazać fragment kodu z tej templatki, może trochę rozjaśni i wymyślimy coś lepszego, bo każdy widok przekazuje context z taką samą nazwą zmiennej (czyli XXX) tylko wartość się różni (np. XXX1, XXX2) i wtedy w template jest ta zmienna dla wszystkich widoków