الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة عدم عمل extends في القالب

بدأه احمد وسام في 13 مايو 2013 · 13 رد · 448 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :

 

اتعلم على تجربة ال block + extends

 

iل تذكر استاذ احمد عندما سالتك عن block

 

حبيت اجربه

 

 

ﻻكن تخرج معي مشكلة

 

وهو

 

    raise TemplateNotFound(template)
TemplateNotFound: base.html
127.0.0.1 - - [13/May/2013 15:43:54] "GET /signup HTTP/1.1" 500 747

 

كنت اجرب الحقول الخاصة بمكتبة البوتستراب

 

وجدت تنسيقات جميلة في الحقول حبيت اجربه

 

عملت قالب ووضعته مع القالب الخاص بالبوتستراب

 

وارد ان استورده

 

ﻻكن تخرج مشكلة هذا القالب الي عملته

 

{% extends 'base.html' %}

{% block content %}
<h1> SignUp </h1>
<form class="form-horizontal" action = 'signup' method = 'POST'>
	<div>
		{{error}}
	</div>
  <div class="control-group">
    <label class="control-label" for="inputusername">Username</label>
    <div class="controls">
      <input type="text" id="inputEmail" placeholder="username">
    </div>
  </div>
  <div class="control-group">
    <label class="control-label" for="inputPassword">Password</label>
    <div class="controls">
      <input type="password" id="inputPassword" placeholder="Password">
    </div>
  </div>
  <div class="control-group">
    <label class="control-label" for="inputEmail">Email</label>
    <div class="controls">
      <input type="text" id="inputEmail" placeholder="Email">
    </div>
  </div>
  
  
      <button type="submit" class="btn btn-info">Sign in</button>
    </div>
  </div>
</form>
{% endblock %}
#2

يبدو أن ملف base.html مجهول 

 

مطلوب معلومات أكثر، 

 

الإطار المستخدم

المكتبة المستخدمة (على مايبدو أنها jinja2 )

كيفية إستدعائك للقالب

مسارات القوالب

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3

شوف اخي انا اتعلم واريد ان اتقن اطار قارورة

 

وضعت القالب الخاص بالبوتستراب في مجلد وسميته تمبلت ووضعت ايضا القالب الي عملته معه في نفس المجلد

 

 

نعم انا عملت مثل ماعامل انت في السكربت الي عملته ستخدمت مثل ماستخدمت انت jinja2

 

 

استدعي القالب بشكل طبيعي

هل تقصد في الكود السكربت

 

ام في القالب

 

في القالب مثل ماقلت لك عن طريق extend

 

وفي السكربت

 

return template('temlpate/sign')

 

هكذا

#4

لهذا أنشئت هذا المشروع

https://bitbucket.org/xmonader/bottle-quickstart

ضع جميع القوالب في مجلد templates

تم تجهيزه وإعداد bottle لإستخدامه بدون مشاكل

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#5

ﻻكن انا اخترت غير المكتبة الذي اخترتها انت من بين مكتبات بوتستراب , عادي .؟

 

 

 

جيد , اريد ان اعرف كيف احل هذه المشكلة اذا واجهتني في اﻻيام المقبلة باذن الله ؟

تم تعديل هذه المشاركة بواسطة احمد وسام في 13 مايو 2013 في 18:46

#6

كل ماتريده من مكتبات css او js ضعه في مجلد public 

 

أما سؤالك، فيجب أن تخبر bottle اين تبحث. ستجد الحل في ملف settings.py في bottle-quickstart

 

 
import os
import bottle
 
templatesdir=os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/')
staticdir=os.path.join(os.path.dirname(__file__), 'public').replace('\\','/')
 
 
bottle.TEMPLATE_PATH.insert(0, templatesdir)

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 13 مايو 2013 في 18:50

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#7

والله اخي صحيح , فاتني هذا السطر

 

templatesdir=os.path.join(os.path.dirname(__file__), 'template').replace('\\','/')

كنت واضع فقط السطر الثاني

لدي سؤال ولو زحمة عليك

 

bottle.TEMPLATE_PATH.insert(0, templatesdir)

ممكن شرح هذا السطر

#8

بيضيف مسار templatesdir إلى المسارات التي يبحث فيها عن القوالب

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#9
نعم لانه يقوم بالبحث اوتاماتيكيا في المجلد ./ (او في جذر المشروع) كذلك في views/.

وبما اننا اظفنا المجلد templates فتوجب علينا اظافة هذا الاخير الى بيئة العمل الخاص ب Bottle من خلال هذا الامر
#10

جزاكم الله خيرا

#11

الحمدلله اخي عمل

 

لحل هذا

 

اضفت السطر الخاص بالبحث في ملف التمبلت

 

 

+

 

استوردت الملف الذي يحتوي

import os
import bottle
 
templatesdir=os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/')
staticdir=os.path.join(os.path.dirname(__file__), 'public').replace('\\','/')
 
 
bottle.TEMPLATE_PATH.insert(0, templatesdir)

 

حيث اصبح هكذا

 

مثل ماعامل انت في السكربت

 

import cdirfilescdirfiles.init()

تم تعديل هذه المشاركة بواسطة احمد وسام في 13 مايو 2013 في 23:26

#12

اخي احمد ولو زحمة عليك ازعجتك انا بتكرار الشرح لكن للان لم يدخل في بالي كلما اراه فقط اريد فهم وضيفة المتغيرين ماذا يفعلان

 

في هذا الكود

 

templatesdir=os.path.join(os.path.dirname(__file__), 'template').replace('\\','/')
staticdir=os.path.join(os.path.dirname(__file__), 'assets').replace('\\','/')

 

ارجو ان تشرحه لي بطريقة افهمها

 

ولو اتعبك

 

جزاك الله خيرا

#13
لنفترض انك في وندوز ولديك ملف في المسار التالي
c:\directory\file.txt
الدالة التالية تقوم بما يلي

(__os.path.dirname(__file     

 

-->  \\directory\\

 

ولما تريد اظافة مجلد template الى المسار الاخير

 

 

('os.path.join(os.path.dirname(__file__), 'template

--> \\directory\\template\\

 

وعندما نجمع الدالتين معا:

 

('/', '\\')os.path.dirname(__file__).replace
 
---> /directory/template/
 

 

وهذا حتى يكون متوافقا دائما مع نظام اللينكس 

 

وهذا هو المقصود من العملية

تم تعديل هذه المشاركة بواسطة med reda في 15 مايو 2013 في 00:13

#14

جزاك الله خيرا بماقدمت وجعلها في ميزان حسناتك !!

مواضيع مشابهة