תרגיל בבניית ישום פשוט עם bottle ו-heroku


#1

שלום לכולם!

בהמשך ליום הלימודים אתמול, הנה תרגיל קצר בבניית ישום קטן עם bottle ו-heroku.

הדוגמא והקישורים למקורות נמצאים כאן:

והתרגיל:
השתמשו ב- calendar.HTMLCalendar בכדי לבנות אתר קטן.

שלב 1: הציגו בדף הבית לוח שנה של החודש הנוכחי.
שלב 2: הציגו לוח שנה חודשי בדפים עם ה-url במבנה של /שנה/חודש/, לדוגמא :

/2015/10/

שלב 3: הציגו לוח שנה שנתי בדפים עם ה-url במבנה של /שנה/ :

/2015/

שלב 4: השתמשו ב-SimpleTemplates ובתג a של html בכדי להציג קישורים לשנה/חודש הבאה/הקודמת מתחת ללוחות השנה.

שלב 5: בנו משהו מגניב ושלחו קישור לאתר ולקוד כאן.

בהצלחה!
אודי


תרגיל Calendar + Heroku
#2

היי,
אני מצרף את הפתרון לתרגיל:
האתר - http://fierce-plains-5572.herokuapp.com/
הקוד - https://github.com/AdirShemesh/hackita02_ex1_calendar


#3

האתר - https://froy-calendar.herokuapp.com/
הקוד- https://github.com/hackita-froy/calendar

אני גם שאלה:
בקובץ > server.py יש מתודה render_calendar# .

@bottle.route('/')
@bottle.route('/<year>/<month>')
@bottle.route('<year>/<month>/<day>')
def render_calendar(year=now.year, month=now.month, day=now.day ):
  year = int(year)
  month = int(month)
  day = int(day)
  return bottle.template('monthly_calendar', calendar=cal.formatmonth(year, month),
    **navigate(year,month), **render_history(month, day))

לכאורה, ה-URL :
2015/11/5/ לדוגמא, היה צריך להחזיר לי את היומן + גישה לפרמטרים.
עם זאת, הוא מחזיר לי שגיאת not found . יש למשהו מושג??


#4

הי דוד!

נסה להכנס בקישור הזה:
https://froy-calendar.herokuapp.com/2015/11

זה עובד. למה זה עובד? שים לב שה-route מוגדר בלי פרמטר של יום - ולכן הוא לא
מוצא את זה.
אפשר כמובן לפתור את זה בכל מיני דרכים - אבל כרגע ככה זה מוגדר, ולכן זה מה
שחוזר. והדיוק כאן חשוב :slight_smile:

שיהיה שבוע טוב!
יותם

2015-10-24 22:17 GMT+03:00 david_fradis info@hasadna.org.il:


#5


https://murmuring-harbor-9021.herokuapp.com/

5: בלוח השנה השנתי, כל חודש הוא href ללוח החודשי של אותו חודש. לא שימושי במיוחד (כי לא מוסיף שום אינפורמציה על מה שיש בלוח השנתי), ואני מניח שיש דרכים פשוטות יותר לעשות את זה, אבל עדיין מגניב.


#6

האם חסר לך לוכסן בכוונה בתחילת ה-route השלישי?


#7

הי!

יפה מאוד!

המלצות:

  • ניתן לכלול את הטיפוס int בתוך ה-route עצמו, מה שנקרא ב-botlle בשם filter, ראה:
    http://bottlepy.org/docs/dev/routing.html#wildcard-filters

  • כפי שכתבת זאת, השורה now = datetime.datetime.now() רצה פעם אחת בלבד, גם אם השרת ימשיך לרוץ ימים רבים. מקובל מאוד בפייתון להשתמש ב-None כערך ברירת המחדל של משתנים ולכתוב כך:

      def render_calendar(year=None, month=None, day=None):
          now = datetime.datetime.now()
          if year is None:
      	year = now.year
          if month is None:
      	month = now.month
          if day is None:
      	day = now.day
    

אודי


#8

אכן, זו הבעיה.


#9

הוספתי עוד פונקציונליות ליומן. לחיצה על תאריך תתן תוצאת מיתה היסטורית ביום הנבחר.

שאלה: האם יש דרך לשנות את הרקע של ה-cell הנבחר בטבלת החודש ללא שימוש ב-JS ? אני לא מצליח למצוא פתרון פשוט ומשביע רצון.


#10

הי @udioron, לעניין הריצה החד-פעמית של datetime.now, והפתרון שהצעת, האם לא ניתן ונכון, במקום לכתוב את סדרת התנאים, להתחכם וליצור פונקציה קטנה שתיקרא בכל רינדור, משהו בסגנון:

def nowtime():
    return datetime.datetime.now()                   # get current time (for current year and month)

#11

@noam איך תשתמש בפונקציה הזאת? כל מה שהיא עושה זה לקרוא לפונקציה אחרת, נראה לי מיותר.


#12

יש לך באג של אות אחת ב td class שלך (לוכסן מיותר). לאחר מכן מומלץ אכן להשתמש ב css.


#13

היי, אני צריך עזרה בלהגדיר פילטר


#14

עניתי לך שם.
אני ממליץ להקפיד תמיד להשתמש בלוכסנים בסוף ה-url - זה שומר על אחידות ומבנה גמיש וברור יותר של כתובות באתר.
על מנת לאפשר למשתמשים מבולבלים להגיע לדך הנכון, ניתן להוסיף redirect אוטומטי לכל מי שבטעות פונה לכתובת בלי לוכסן בסוף:

@route('<path:re:.+[^/]$>')
def add_slash(path):
    return redirect(path + "/")

אודי


#16

האתר : https://hakita2cal.herokuapp.com
הקוד : https://github.com/yeg123/ex1_calender


#17

הקוד: https://github.com/noamoss/simple-bottle-example
התוצר: https://desolate-caverns-9019.herokuapp.com/


#18

האתר: https://still-ravine-8520.herokuapp.com
הקוד: https://github.com/azk/bottle_exercise

  • עיצוב לעצלנים באמצעות Bootstrap.
  • תצוגת החודש משלבת מידע של טמפרטורות מקסימום ומינימום לאותו היום כפי שנמדדו בתחנת המדידה בנמל חיפה (עבור השנים 2001-2011 בלבד).

#19


http://hackical.herokuapp.com/1915/11/
5. הוספתי אירועים היסטוריים לכל חודש

2015-10-27 20:50 GMT+02:00 azk info@hasadna.org.il: