Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Tehnologia DSL la Orange?

conectare navigație auto la ...

Care e pretul corect pe mp?!

Auto 200-250km/zi autostrada, fia...
 Idei noi? Ce verificam la o masin...

Încarcare acumulatori LiPo de 1,5v...

cel mai ieftin generator trifazic

Iti place sa mananci iute?
 cum il cheama pe acest SSD?

Trec ITP-ul daca am montat alt mo...

Problema mesaj supraincalzire tel...

Recuperare Cont Yahoo mail
 Legislatie ambiguua/incompatibili...

Radio Argon 1 se aude foarte incet

Nu gasesc optiunea de a afisa(nu ...

Glafuri interioare mozaic
 

Clarificare in privinta Python/Flask

- - - - -
  • Please log in to reply
5 replies to this topic

#1
adani7

adani7

    Junior Member

  • Grup: Junior Members
  • Posts: 53
  • Înscris: 07.08.2016
Salutare! Dorind sa invat Python 3 si Flask, am inceput sa fac un proiect propriu, dezvoltand un mic site de stiri. Problema e la o functie care programeaza o pagina in care se pot citi un anumit articol si poti sa adaugi si comentarii. Nu inteleg de ce scriptul respectiv e rulat de doua ori, iar variabila declarata ('article') care in prealabil e ok, apare ca fiind fara continut (NoneType), rezultand un cod de eroare 500. Poate sa imi explice cineva care e problema? Scriptul si eroarea sunt urmatoarele:
@app.route('/<article_title>', methods=['GET', 'POST'])
def read_article(article_title):
article = Article.query.filter_by(title=article_title).first()
print("Article:", article.id)
form = CommentForm()
if form.validate_on_submit():
comment = Comment(text=form.text.data, author=current_user.id )
return render_template('read_article.html', article=article, user=current_user)

Attached Files

  • Attached File  1.png   42.4K   30 downloads


#2
Ursul_Polar

Ursul_Polar

    call boy - 9000 jpy\s

  • Grup: Senior Members
  • Posts: 9,186
  • Înscris: 31.07.2006
article nu are vreo proprietate numita 'id'
fa un dir(article) si vezi ce proprietati si metode are obiectul.

Edited by Ursul_Polar, 20 November 2022 - 21:05.


#3
adani7

adani7

    Junior Member

  • Grup: Junior Members
  • Posts: 53
  • Înscris: 07.08.2016

View PostUrsul_Polar, on 20 noiembrie 2022 - 21:04, said:

article nu are vreo proprietate numita 'id'
fa un dir(article) si vezi ce proprietati si metode are obiectul.
Modulul Article creat de mine are urmatoarea forma:
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(128), index=True, unique=True)
text = db.Column(db.Text)
date = db.Column(db.DateTime, default=datetime.utcnow)
author = db.Column(db.Integer, db.ForeignKey('user.id'))
comments = db.relationship('Comment', backref='article')

.
La prima rulare, acesta exista (am subliniat cu rosu in imaginea atasata acuma), insa imediat dupa aceea, scriptul e rulat atomat a doua oara, iar variabila este declarata ca fiind fara continut.https://drive.google...?usp=share_link

Edited by adani7, 20 November 2022 - 21:46.


#4
Ursul_Polar

Ursul_Polar

    call boy - 9000 jpy\s

  • Grup: Senior Members
  • Posts: 9,186
  • Înscris: 31.07.2006

Vizualizare mesajadani7, pe 20 noiembrie 2022 - 21:45, a scris:

....
print-ul ala il ai inainte de GET. de unde anume ii dai print, tu stii.
conform cu output-ul ti se spune clar ca in linia 79 din app.py `article.id` e none.
asta inseamna ca `article = Article.query.filter_by(title=article_title).first()` iti intoarce nimic.
ideal ar fi sa treci in debugging mode si sa vezi cand, cum si cu ce ti se initializeaza obiectul Article.

Edited by Ursul_Polar, 20 November 2022 - 22:55.


#5
adani7

adani7

    Junior Member

  • Grup: Junior Members
  • Posts: 53
  • Înscris: 07.08.2016

View PostUrsul_Polar, on 20 noiembrie 2022 - 22:54, said:

print-ul ala il ai inainte de GET. de unde anume ii dai print, tu stii.
conform cu output-ul ti se spune clar ca in linia 79 din app.py `article.id` e none.
asta inseamna ca `article = Article.query.filter_by(title=article_title).first()` iti intoarce nimic.
ideal ar fi sa treci in debugging mode si sa vezi cand, cum si cu ce ti se initializeaza obiectul Article.
Nope, cand intru pe pagina cu articolul respectiv, se printeaza prima data article.id, pagina se initialieaza, dupa care scriptul mai e parcurs odata in mod automat (se vede din ora din log), si atunci apare eroarea. Daca respectivul query nu ar produce rezultat din prima, nu as putea vedea articolul, pt ca render_template (pt. GET) depinde de respectivul query! Pun link la un screen record.
https://drive.google...?usp=share_link

#6
Ursul_Polar

Ursul_Polar

    call boy - 9000 jpy\s

  • Grup: Senior Members
  • Posts: 9,186
  • Înscris: 31.07.2006
incearca cu debug=False.
'When building a Flask service in Python and setting the debug mode on, the Flask service will initialise twice. When the initialisation loads caches and the like, this can take a while. Having to do this twice is annoying when in development (debug) mode. When debug is off, the Flask service only initialises once.'
daca totul e ok cu debug=False poti sa-ti exporti debug-ul catre un fisier si sa citesti de colea. import de logging si faci un baseconfig.
sau poti incerca cu debug=True si use_reloader=False in app.run(). "If the reloader is not disabled, it could cause an unexpected reload if code changes during debugging." (https://flask.pallet....2.x/debugging/)
din punctul meu de vedere, debug-ul il faci din IDE. (ori iti configurezi Sublime-ul sa faca asta, parca are plugin-uri pentru treaba asta, ori pui un IDE full ca PyCharm Community si te joci acolo)

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate