اذهب إلى المحتوى

السؤال

نشر

لدي مشروع فلاسك Flask وقمت بتقسيم المشروع إلى مجلدين Backend و Frontend ، حيث يحتوي المجلد backend على ملفات Python الخاصة بفلاسك Flask، والمجلد Frontend يحتوي على ملفات القوالب:

backend
  |_ app.py
frontend
  |_ view_notifications.html

الآن أحاول أن أقوم بإستخدام الملف view_notifications.html من داخل أحد المسارات بالشكل التالي:

@app.route('/notifications')
def notifications():
    return render_template("frontend/view_notifications.html")

لكن الكود السابق لم يعمل، حاولت أن أستخدم نقتطين .. للخروج من المجلد ولكن لم يعمل شيء، وفي كل مرة يظهر خطأ TemplateNotFound

كيف أقوم بحل هذه المشكلة؟

Recommended Posts

  • 1
نشر (معدل)

لا تحتاج إلي كتابة المسار داخل render_template فقط يمكنك تغيير المسار الرئيسي من خلال template_folder ,

تابع التالي


 

#main.py
from flask import (Flask, render_template)

app = Flask(__name__, template_folder='../frontend/template')


@app.route('/notifications')
def notifications():
    return render_template("view_notifications.html")

  
  
#إذا كان لديك مسارات فرعية فيمكنك إستخدامها بالشكل التالي

@app.route('/page')
def pages():
    return render_template("post/page.html")

  

وإذا كنت تشك في مسارك يمكنك كتابة المسار كاملاً بالشكل التالي

app = Flask(__name__, template_folder=r'C:\Users\mohamed\project\frontend\template')

لاتنسي حرف r مهم إذا كنت تستخدم نظام التشغيل ويندوز ومساره الكامل والذي يبدأ ب C:\Users أو D:\x وما شابه

وإلا سيواجهك خطأ كهذا

    app = Flask(__name__, template_folder='C:\Users\mohamed\project\frontend\template')
                                         ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

موفق

تم التعديل في بواسطة Mohammed_Emad
  • 0
نشر

عادة Flask يبحث عن القوالب ( templates) في مستوى الجذر لتطبيقك  في مجلد يسمى templates. لتغيير هذا المجلد أو إختيار مجلد آخر ما عليك فعله الا استعمال template_folder على الشكل التالي:

app = Flask(__name__, template_folder='frontend')

@app.route('/notifications')
def notifications():
    return render_template("view_notifications.html")#هنا عليك فقط وضع اسم القالب

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...