Closed JoPl19 closed 3 months ago
Živjo,
brez funkcije url
Binderja gotovo ne bo pognalo. Treba jo bo torej dodati. Če bo uporaba funkcije pravilno implementirana, bo projekt pognalo tudi na localhostu. Pazi, da kot argument funkciji url
podaš ime funkcije iz app_NBA_fantasy.py
. Na primer:
return redirect('/homescreen')
spremenimo v
return redirect(url('domov'))
V primeru, ki si ga zgoraj navedel, bo bolj prav url('prijava_get')
.
Funkcijo url
uporabi povsod (v pythonu in htmljih), če kaj ne bo jasno lahko pogledaš, kako so to storili drugi, npr. https://github.com/matevzkusterle/OPB_hospital/tree/main.
Če potem še vedno ne bo delalo, commitaj spremembe na repozitorij in sporoči, da pogledam, kje je problem :D
Oj, sem dodal urlje v branchu poskus, ampak kot prej vrne 'No route with that name'.
Živjo,
Pri pregledu brancha poskus
sem našel težave.
bottle.py
datoteke ni potrebno imeti v repozitoriju (saj jo lahko vsak inštalira lokalno z pip install bottle
). To datoteko izbrišita in v requirements.txt dodajta vrstico "bottle".
bottle objekta ni potrebno inicializirati na začetku datoteke, torej izbrišita vrstice:
# Inicializacija aplikacije in povezave z bazo
app = Bottle()
pri vsaki definiciji klica ni nato potrebno klicati @app.get(...)
, ampak samo @get(...)
, podobno tudi samo @post(...)
in @route(...)
, na primer:
@get('/')
def domaca_stran():
return template('domaca_stran.html')
na koncu datoteke nato ni potrebno app
dati kot argument, torej:
if __name__ == '__main__':
run(host='localhost', port=8080, debug=True)
Ko popravita te 4 točke, nato binder še vedno ne bo deloval, saj ročno nastavljata nekatere spremenljivke. Za delovanje binderja želimo, da aplikacija pogleda v okolje in spremeljivke (npr. port) nastavi primarno na vrednosti iz okolja. Zato bo potrebno na začetek dodati vrstice:
import os
SERVER_PORT = os.environ.get('BOTTLE_PORT', 8080)
RELOADER = os.environ.get('BOTTLE_RELOADER', True)
Ustrezno nato spremenimo vrednosti tudi na koncu datoteke:
if __name__ == '__main__':
run(host='localhost', port=SERVER_PORT, reloader=RELOADER)
Opazil sem tudi, da je v requirements.txt
precej standardnih pythonovih packagejev, ki znotraj pythona že po defaultu. Teh ne rabimo. Za pregled, katerih paketov ne rabita, lahko uporabita ta link: https://docs.python.org/3/library/index.html.
Poskusita odpraviti te napake in commitajta. Bomo videli ali bodo potem še težave z Binderjem ali ne.
Hvala za popravke, sem v branchu popravil te stvari in počistil requirements.
Link do binderja v tem branchu:
https://mybinder.org/v2/gh/marci314/NBA-fantasy-app.git/poskus
Se pa še vedno pojavi isto kot tisti screenshot od prej, ko nato izberem terminal in tam poženem py app_NBA_fantasy.py, dolgo melje, potem vrne tole:
Traceback (most recent call last):
File "/home/jovyan/app_NBA_fantasy.py", line 19, in
Živjo,
sem dodal nekaj popravkov in bi sedaj Binder moralo zagnati. Sprejmita zgornji pull request (https://github.com/marci314/NBA-fantasy-app/pull/2) in poskusita ali Binder deluje tudi pri vama (branch poskus
).
Slik sicer še ne prikaže na vajini spletni strani, to pa zato, ker za dostop do njih uporabljata pot. Podobno kakor za linke in preusmeritve, je potrebno tudi za slike uporabljati funkcijo url
. Vidim, da funkcijo static_files
že imata, malo jo bo sicer potrebno popraviti:
@route('/static/<filename:path>')
def static_files(filename):
return static_file(filename, root='Presentation/static/Images')
Nato je potrebno še povsod v htmljih dodati funkcijo url tudi za prikaz slik, na primer:
<img src="/static/Images/nba-logo.jpg" alt="NBA Fantasy League Logo">
->
<img src="{{url('static_files', filename='nba-logo.jpg')}}" alt="NBA Fantasy League Logo">
Ko vse to popravita, preglejta ali vse deluje na Binderju. Če vse deluje, potem spremembe dodajta na main
branch in mi javita, da še vsebinsko pregledam celoten projekt.
Živjo, še mi je ostalo nekaj problemov :( Binder se zdaj pravilno zažene, hvala za pomoč, klicanje linkov po aplikaciji pa je še vedno problematično. Pri odstranjevanju in dodajanju igralcev in trenerjev sva prej uporabila nekaj js, ker mi nikakor ni uspelo tega združiti s pravilnim klicanjem url, sem kodo spremenil, da se gumb ppojavi ob vsakem igralcu posebej. Poskus odstranitve/dodajanja igralca vrže napako 405 oz. napako 500, brez drugih sporočil. Pred vsemi prilagoditvami za binder so stvari delale, nova napaka 405 pa se pojavi tudi, če aplikacijo zaženem lokalno. Prosim za pomoč, kako lahko aplikacijo prilagodiva, da bodo stvari spet delale na binderju, jaz sem bolj kot ne izčrpal svoje ideje.
Za dostop do ekipe, ki že ima nekaj igralcev dodanih v ekipo, lahko uporabite uporabniško ime in geslo "jp"
Živjo,
problem je, da je v htmlju funkciji url
potrebno posebej poimenovati argumente. Poglejta kaj vse sem popravil v zgornjem PR, mergajta v vajin repo in poskusita, če res vse dela tako kot mora (tako lokalno kakor na binderju). Če dela, sporočita, da še jaz enkrat preverim in potem odobrim projekt.
Sva dodala in mergala, dela :) Commitala sva tudi naknadne manjše popravke, projekt je končan. Hvala za vso pomoč!
Živjo, Zataknilo se mi je pri implementaciji binderja v projekt. Po kliku na link v readme filu se odpre, kar kaže slika. Če v terminalu znotraj tega poženem app, ne javi (več) nobene napake, vendar se tudi nič ne zgodi.
Problem je najbrž to, da v html in py datotekah ne kličem funkcije url, ampak ko sem to poskusil storiti, se mi je osnoven app sesul in ni več delal, javi napako bottle.RouteBuildError: ('No route with that name.', 'prijava').
V html datotekah sem '/prijava' spreminjal v "{{url('prijava')}}", v pythonu pa '/prijava' v url('prijava'). Kaj bi moral popraviti?