שימוש בrender templates

היי אני מנסה לקשר בין flask לבין האתר שבניתי, הכנסתי את הקובץ index.html לתיקייה templates, אבל משום מה הוא לא נקלט ואני מקבל שגיאה :

ניסיתי לבדוק וקבצי html אחרים כן נקלטים בצורה תקינה מהתיקייה של templates, לא מבין ממש מה הבעיה איתו ספציפית, כשאני מעתיק את התוכן של index.html לתוך משתנהHTML, בקובץ app.py ומחזיר את המשתנה HTML, אני כן יכול לראות תוצאה תקינה ב127.0.0.1:5000 בדפדפן (אם כי ללא העיצוב של קובץ ה-CSS) למישהו יש רעיון מה הבעיה? מקווה שהבהרתי את עצמי בצורה ברורה.

מה השגיאה בטרמינל? אמור להיות פירוט.
לא יזיק גם לראות את התוכן של app.py

בטרמינל אין שגיאה.

ככה נראה הקובץ של app.py:
from flask import Flask, render_template

app = Flask(name)

@app.route(’/’)

def hello_world():

return render_template('index.html')

ככה נראה הקובץ index.html:

<!-- https://github.com/joshbuchea/HEAD -->

<link rel="stylesheet" href="index.css">

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Movies Recommondations</title>
<!-- https://www.youtube.com/watch?v=3elFdnJexmU&feature=youtu.be&ab_channel=%D7%9E%D7%93%D7%A8%D7%99%D7%9A%D7%A4%D7%99%D7%99%D7%AA%D7%95%D7%9F -->

<h1>Movies Recommondations</h1>

<form action="/action_page.php" method="get">

  <label for="genres">Choose your genre from the list:</label>

  <input list="genres" name="genre" id="genre">

  <datalist id="genres">

    <option value="Comedy">

    <option value="Action">

    <option value="Drama">

    <option value="Science Fiction">

    <option value="Family">

  </datalist>

  <button type="submit" class="btn btn-primary">Search</button>

</form>

</div>

<h2>Results</h2>

<div id="results">

  <div class="result" data-result-id="1">

    <div class="movies-details">

      <div class="movie-name res-property">{{movie-name}}</div>

      <div class="movie-length res-property">{{movie-length}}</div>

      <div class="movie-rate res-property">{{movie-rate}}</div>

      <div class="movie-main-actors res-property">{{movie-main-actors}}</div>

    </div>

  </div>

  <div class="movies-result-sample">

     {{ code sample}}

  </div>

</div>

אוקיי, מה גורם לפונקציית הפייתון לרוץ? יש דוגמא בפורום מה התוכן צריך להיות

לא ממש הבנתי את השאלה…
אתה מדבר על פונקציית hello world?

כן, משהו אמור להריץ אותה. ואגב, בטרמינל שבו הרצת חייב להיות לוג כלשהו שמפרט את השגיאה שקיבלת.

אוקיי אני מניח שבטרמינל התכוונת לcmd (בהתחלה חשבתי שהתכוונת לvscode),
אני מקבל את ההודעה הזאת:
return render_template(‘index3.html’, str1=“hagai3”)
File “c:\programdata\anaconda3\lib\site-packages\flask\templating.py”, line 140, in render_template
ctx.app,
File “c:\programdata\anaconda3\lib\site-packages\flask\templating.py”, line 120, in _render
rv = template.render(context)
File “c:\programdata\anaconda3\lib\site-packages\jinja2\environment.py”, line 1090, in render
self.environment.handle_exception()
File “c:\programdata\anaconda3\lib\site-packages\jinja2\environment.py”, line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File “c:\programdata\anaconda3\lib\site-packages\jinja2_compat.py”, line 28, in reraise
raise value.with_traceback(tb)
File “C:\Users\Hagai\Desktop\חגי\תכנות\Visual Studio Code\YouTube live\week 12\project\templates\index3.html”, line 35, in top-level template code

{{movie-name}}

jinja2.exceptions.UndefinedError: ‘movie’ is undefined
127.0.0.1 - - [31/Oct/2020 20:58:34] “←[35m←[1mGET / HTTP/1.1←[0m” 500 -

שיחקתי קצת עם הקוד, מחקתי ובדקתי ומה שעושה את הבעיה נמצא בחלק הזה של הקוד:

  <div class="result" data-result-id="1">

    <div class="movies-details">

      <div class="movie-name res-property">{{movie-name}}</div>

      <div class="movie-length res-property">{{movie-length}}</div>

      <div class="movie-rate res-property">{{movie-rate}}</div>

      <div class="movie-main-actors res-property">{{movie-main-actors}}</div>

    </div>

  </div>

אגב ושאלה נוספת, אני רואה שהוא לא מפעיל את הקובץ css והייתי שמח לדעת איך לעשות זאת

קבצי CSS צריך לשים בתיקיית STATIC ולדאוג להגדיר נתיב מתאים. (או לדרוס את ברירת המחדל ולשים בנתיב אחר, יש מדריכים בשפע באינטרנט איך להגדיר)

לייק 1

הקובץ html מצפה לקבל פרמטרים שאתה לא שולח לו.

2 לייקים