Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Dade, dade

Parola la lock screen

Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...
 Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...

switch microtik
 Permis categoria B la 17 ani

Sfaturi pentru pregatirea de eval...

Crapaturi placa

cum imi accesez dosarul electroni...
 Momentul Aprilie 1964

Sursa noua - zgomot ?

A fost lansat Ubuntu 24.04 LTS

Pareri apartament in zona Berceni?
 

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   31 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

 Ursul_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

 adani7, 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

 Ursul_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

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

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