michael93pl
michael93pl
  • adult
1
Treść przeznaczona dla osób powyżej 18 roku życia...
  • Najlepsze
  • Wszystkie komentarze
qbek
qbek
qbek
1
@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
michael93pl
michael93pl Autor
1
@gryzon_c: @qbek: Tylko mały update z wczoraj - ogarnąłem to bez zmiany url'a i choć to pyrrusowe zwycięstwo, wciąż cieszy :D
qbek
qbek
qbek
0
@michael93pl: pokaż też submit.html (bo rozumiem, że to co wrzuciłeś to result_submit.html)
michael93pl
michael93pl Autor
0
@qbek: Tak, jak najbardziej resultsubmit.html wrzucilem,

A tutaj jest submit.html https://pastebin.com/N1hewdZh

I dodatkowo
formhelpers.html https://pastebin.com/wagdjY0u
qbek
qbek
qbek
0
@michael93pl: zasadniczo jesteś dość blisko, z tego co pamiętam ten redirect który robisz w przypadku POSTa

if form.validate_on_submit():
return redirect(url_for('success'))

"gubi" część informacji (robisz redirecta ale nie przekazujesz danych z posta/formularza)
obczaj https://stackoverflow.com/questions/15473626/make-a-post-request-while-redirecting-in-flask
zobacz też flask request
michael93pl
michael93pl Autor
0
@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
michael93pl
michael93pl Autor
0
Mam nadzieję, że nie nadużywam Twojej dobroci ale pozwolę sobię zawołać @biwalencik bo ostatnio mi mega pomogłeś z ogarnięciem podstaw Flaska
qbek
qbek
qbek
0
@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)
gryzon_c
@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
gryzon_c
@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)
gryzon_c
w django tak się to robi, strzelam ze w flasku bedzie analogicznie
https://docs.djangoproject.com/en/2.0/topics/forms/#the-view
michael93pl
michael93pl Autor
  • adult
0
Treść przeznaczona dla osób powyżej 18 roku życia...
qbek
qbek
qbek
0
@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
michael93pl
michael93pl Autor
0
@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 )
gryzon_c
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
qbek
qbek
qbek
0
@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
michael93pl
michael93pl Autor
0
@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 :)
gryzon_c
gryzon_c
  • adult
0
Treść przeznaczona dla osób powyżej 18 roku życia...
michael93pl
michael93pl Autor
0
@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