bobicnina / opb-projekt

0 stars 2 forks source link

Napaka AttributeError #3

Closed shroomba closed 10 years ago

shroomba commented 10 years ago

Ko sem naredila nov bottle route za /pregled/mesec/ za mesečne stroške, mi je začelo metati to napako. Če zakomentiram, vse deluje, napisano je pa ravno tako kot pri vozniku. Tudi če spremenim imena spremenljivk, se nič ne spremeni. Ali še komu ne dela? (meni že tako ali tako bottle ne dela na win 8.1)

andrejbauer commented 10 years ago

Katera datoteka, katera vrstica v datoteki, kaj natančno pravi error report (cut & paste error reporta bi prišel prav)?

shroomba commented 10 years ago

V datoteki avtoprevoznistvo.pyw, vrstica 250. Napaka: Traceback (most recent call last): File "E:\Faks\OPB\stran\avtoprevoznistvo.pyw", line 250, in @bottle.route("/pregled//") File "E:\Faks\OPB\stran\bottle.pyw", line 809, in decorator self.add_route(route) File "E:\Faks\OPB\stran\bottle.pyw", line 769, in add_route self.router.add(route.rule, route.method, route, name=route.name) File "E:\Faks\OPB\stran\bottle.pyw", line 397, in add warnings.warn(msg % (method, rule), RuntimeWarning) File "C:\Python33\lib\idlelib\PyShell.py", line 60, in idle_showwarning file.write(warnings.formatwarning(message, category, filename, AttributeError: 'NoneType' object has no attribute 'write'

Napako vrže tudi, če napišem samo: @bottle.route("/pregled//") def pregled(datum): pass

Poizkusila sem tudi z drugimi imeni spremenjlivk, da se ne bi kje katero ime ponavljalo in bi zato prišlo do napake, pa nič ne pomaga. Zanimivo je tudi, da mi na Windows 8.1 vrže to napako, torej se to izvede še pred bottlom, saj mi je prej vedno vrglo napako zaradi encodinga v bottlovi datoteki.

andrejbauer commented 10 years ago

Če narediš samo pass potem dobiš napako, ker si vrnila None iz funkcije, vsaj predvidevam, da je tako.

Sicer je pa zelo verjetno napaka v tem, da delaš datum.split(" ") v vrstici 252. Pričakuješ torej, da bodo v URL naslovu presledki? To je vedno zelo problematično. Če potrebuješ dva podatka (mesec in leto), potem raje naredi drugačen URL za dostop do strani v obliki /pregled/2014/8/ (se pravi, najprej leto, da bo pravilno urejeno).

@bottle.route("/pregled/<leto:int>/<mesec:int>/")
def pregled(leto, mesec):
    c=baza.cursor()
    c.execute("SELECT * FROM mesecni_stroski WHERE mesec=? AND leto=?", [mesec, leto]])
    c=tuple(c)
    return bottle.template("datum.html", datum=datum, podatki=c)
shroomba commented 10 years ago

Napaka je bila v html-ju, kjer sem za link uporabila napačno spremenljivko (zato spreminjanje imen spremenljivk k Pythonu ni naredilo nobene razlike), ki je imela vmes presledek. Sedaj vse dela.

andrejbauer commented 10 years ago

Še vedno je slaba ideja, da imaš presledke v URLjih.

shroomba commented 10 years ago

Verjetno zato ni delalo. Sedaj je tako, kot ste predlagali: /leto/mesec/.