Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cadastru gratuit imobil?

Invataturile lui nea` Goe Bas(gra...

Teltonika Romania - legit?

Grup whatsapp bloc
 Acasa TV devine televiziune gener...

[Recomandare] Caut scara de 7 m (...

Procedura Rabla 2024

"File Explorer" pentru un...
 Inel de logodna

Ati auzit de scandalul in care es...

Iaz 12 m3

Recomandare masina de tuns gazon
 Recomandare rulouri/rolete/jaluze...

Zgarda capuse /pureci + hrana

Scula taiere plastic

Definitie activitate continua
 

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,208
  • Î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,208
  • Înscris: 31.07.2006

View Postadani7, on 20 noiembrie 2022 - 21:45, 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.

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,208
  • Î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

Bun venit pe Forumul Softpedia!

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