Wpis z mikrobloga

@qbek: kombinowałem właśnie z flask request i narazie bez sukcesu. Przebilem sie przez stackoverflow i dokumentacje ale wciąż nie wiem czemu to się nie spina i akurat tego znaleźć nie mogę. Pewnie źle szukam, gdzieś to musi być ale nie mam już trochę pomysłu, choć nie jest to jakoś super fancy opcja. Zaraz obczaję ten temat
  • Odpowiedz
@michael93pl: nie działa Ci rozwiązanie ze stacka?
sprawdzasz czy request to POST i form jest bez błędów funkcją validateonsubmit i późniejszy redirect zmieniasz na redirect(url_for('success'), code=307) (nie jestem pewien czy 307 na pewno będzie Ci potrzebne, jednak spróbuj jeżeli request.form będzie puste)
same dane z forma są bodaj w request.form.nazwapola (używaj pdb do debugu, albo na początek printuj sobie co Ci potrzebne)
  • Odpowiedz
@michael93pl: jak ty chcesz wyświetlać te dane skoro nigdzie ich nie przekazujesz? w przypadku faila przekazujesz dane w zmienej form
('submit.html', form=form)

w przypadku sukcesu masz tylko ('result_submit.html')

flask nie jest telepatą xD
  • Odpowiedz
@michael93pl:
nie wiem też do końca w co celujesz ale możesz alternatywnie:
zastąpić w widoku index redirecta return redirect(url_for('success')) od razu na render innego szablonu return render_template('result_submit.html', dane=twojedane) i w nim będziesz miał normalnie wartości forma LUB pogrzebać przy submit.html tak żeby pokazywał pusty formularz na requesta GET a jak jest request POST z danymi to wyświetlał wysłane dane

no i pisz co dokładnie Ci nie działa :P
  • Odpowiedz
@qbek: ja tam się na flaskform nie znam ale jeszcze jedno mi nie pasuje - to
form = MyForm()

nie powinieneś w przypadku posta podkarmić jakoś te form na przykład requestem? tak na logikę.

if coś tam post:
form = Myform(request)
  • Odpowiedz
@qbek: właśnie czułem, że brak przekazania danych, to #!$%@? opcja :D próbowałem na kilka sposób przekazać tam dane (stad ta "dupa" gdzies tam w petli w resultsubmit) ale ciagle mi to nie wychodzilo. Dodanie 307 do return redirect(urlfor('success')) wywalało mi błąd odnośnie jakiejś błędnej metody.

rendertemplate('resultsubmit.html', dane=twojedane) - tutaj właśnie ihmo jest błąd, na zasadzie, nie wiem do czego odnieść się, żeby te dane pobrać.

Próbowałem
  • Odpowiedz
@gryzon_c ogólnie dobrze mówisz, dołożenie danych forma z requesta to zazwyczaj dobry pomysł i @michael93pl robiłbyś to za pomocą na przykład form = Myform(request.form) jak widzisz w oficjalnych dokach flaska http://flask.pocoo.org/docs/0.12/patterns/wtforms/#in-the-view
jednak w tym konkretnym przypadku widzę że używasz metody validateonsubmit a sama klasa MyForm dziedziczy z FlaskForm (który zgaduję) jest częścią pakietu flask_wtf
http://flask-wtf.readthedocs.io/en/stable/quickstart.html#validating-forms więc użycie request.form nie jest konieczne, z doków:

Note that you don't have
  • Odpowiedz
@qbek: Jeden Miruś mi stworzył podstawowy form, 2 dzień bawię się z Flaskiem i trochę po macoszemu wszystko robię, docsy przebijałem się kilka razy zanim tutaj napisałem i jedyne co wiem atm to co chcę osiągnąć :D fakt, importy powinienem wrzucić, tak dla poprawności politycznej ^^ - https://pastebin.com/yHtVtJB4

(ostatnio mnie jakiś mod zjechał na stacku, że za dużo wrzucam, tutaj poszedłem w minimalizm :D )
  • Odpowiedz
Flask-WTF; it will load automatically.


@qbek: jak ja tego nie lubię xD nie wiadomo jak i gdzie, ale coś się magicznie wstrzykuje a nawet funkcja która obsługuje requesta nie dodanego parametru by operować na danych z requesta xD

kocham magic programming aż mi się spring przypomina xD
  • Odpowiedz
@michael93pl: wrzucaj jak najmniej kodu (przejrzystość), ale zachowaj zasadę że zawsze powinien się wykonać/skompilować (spójność)

czy jeszcze czegoś nie rozumiesz albo coś Ci nie działa? w sumie wszystko Ci dość ekstensywnie rozpisaliśmy ;-)

BTW importy popraw żeby nie importować 2 razy z tego samego
  • Odpowiedz
@qbek: @gryzon_c: wiem i bardzo wam dzięki za to ^^ nie wiem czy to zmęcznie przez aktualną godzinę czy po prostu brak skilla i nie mogę tego zebrać w całość i wyciągnąć konkretnej odpowiedzi ale pokombinowanie samemu pewnie mi lepiej zrobi, niż gotowa odpowiedź. Względnie rozumiałem zasadę Flask'a do momentu tego wyciągnięcia danych, trochę gubię się w methodach get i post ale to też do nadrobienia :)
  • Odpowiedz
@michael93pl:

nie wiem czy to zmęcznie przez aktualną godzinę czy po prostu brak skilla i nie mogę tego zebrać w całość

przez to, że jest to #!$%@? zrobione. no bo sorry ale właśnie przez takie rzeczy jak magiczne ładowanie ciężko zrozumieć co się dzieje.

gdybyś musiał operować na obiekcie request i response to byś skumał jak to działa, jak działa przekazywanie danych ale że nie musisz bo jakaś biblioteka robi
  • Odpowiedz
@gryzon_c: W Django bawiłem się może kilka godzin, tutaj Flask trochę z polecenia, żeby rozwiązać na szybko kwestie inputu nie przez console tylko webowo. Choć jak sami doszliście, dziwne w takim razie, że na tyle Flask pozwala. Mnie trochę zdziwiła "prostota" flask-sqlalchemy względem samego sqlalchemy, trochę więcej musiałem tam poustawiać, żeby tworzyło mi wszystkie tabele. Znając siebie i tak dzisiaj nie pójdę spać, zanim nie zadziała mi to, lubie kiedy
  • Odpowiedz
@michael93pl: najważniejsze stary to zrozumienie jak to działa, przynajmniej mniej wiecej. jeśli nie zrozumiesz to polegniesz przy jakiś bardziej zaawansowanych rzeczach których nie będzie w tutorialach.

na chwile obecną zamiast uczyć się django/flaska musisz ogarnąć podstawy protokołu html - metody (get, post, delete, patch etc), nagłówki, jak to się dzieje, że dane z formularza są gdzieś wysyłane, jak to wygląda. co to jest sesja a co to ciasteczko, jak działa
  • Odpowiedz
@gryzon_c: jak najbardziej masz rację, tutaj ewidentnie uczę się na bieżąco, przerzucam tone danych z docs i stacka odnośnie konkretnego problemu, a nie mam podstawy protokułu html'a ( swoją drogą, myślałem, że mam ;p) najwyższy czas to nadrobić
  • Odpowiedz