Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
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?
 Free streaming SkyShowtime de la ...

Skoda Fabia 1.0 TSI (110 CP)- 19 ...

Mezina familiei, Merida BigNine

The Tattooist of Auschwitz (2024)
 

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

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

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