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

Mohssen A Mohssen

الأعضاء
  • المساهمات

    317
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو Mohssen A Mohssen

  1. قمت بعمل مشروع بفلاسك Flask على جهاز Raspberry Pi وعندما قمت بتشغيله ظهرت الرسالة التالية: running on http://127.0.0.1:5000/ وعندما أشغل الرابط في المتصفح يعمل بدون مشكلة، كل هذا طبيعي، ولكن المشكلة أنه عند زيارة الموقع في جهاز آخر في نفس الشبكة تظهر رسالة الخطأ: ERR_CONNECTION_REFUSED
  2. أحاول إضافة صنف CSS Class إلى أحد الحقول في wtform لكي أتحكم في شكله من خلال CSS لذلك قمت بكتابة هذا الكود: في ملف العرض view: form.test_field = forms.ClassedTextField('Test Name') في ملف jinja: {{ form.test_field }} ويتم إنتاج الحقل الحقل في النهاية بهذا الشكل: <input id="test_field" name="test_field" type="text" value=""> لكن المشكلة أني لا أعلم كيف يمكن إضافة صنف CSS إلى الحقل السابق بإستخدام wtform؟
  3. في فلاسك يمكنني تمرير بيانات قالب بالشكل التالي: render_template("hello.html", messages={'title':'hello world'}) ويمكنني إستخدام هذه البيانات في القالب نفسه من خلال الكود التالي ليتم عرض كلمة hello: {{ messages['title'] }} لكن ماذا إذا كان هناك مسار يؤدي إلى عرض نفس القالب: @app.route("/hello") def hello(): # هنا يتم تنفيذ بعض الأكود return render_template("hello.html") إذا أردت أن يتم تنفيذ نفس الأكواد كما في المثال السابق فيجب أن أستعمل الدالة redirect: return redirect("/hello", messages={"title":"hello world"}) لكن يبدو أنه لا يمكن إستخدام redirect لتمرير البيانات، حيث يظهر الكود السابق الخطأ التالي: TypeError: redirect() got an unexpected keyword argument 'messages' هل توجد طريقة لتمرير البيانات أثناء عمل إعادة توجيه redirect؟
  4. أستخدم فلاسك مع قوالب Jinja لعرض بعض المحتوى في المتصفح، ولكن عندما أقوم بعرض رقم float بقيمة عشرية دقيقة للغاية، بالشكل التالي: {{result|float}}% أجد أن الرقم زهر بالعديد من الخانات بعد العلامة العشرية: 7.9339788360% كيف يمكنني جعل النتيجة تصبح برقمين فقط بعد العلامة العشرية؟ بالشكل التالي: 7.93%
  5. عندما أقوم بتنفيذ أي إستعلام بـ sqlalchemy فيتم إرجاع النتائج من قاعدة البيانات وقد تحتوي هذه القائمة على نتيجة واحدة فقط أو قد تحتوي على مجموعة من النتائج وأحيانًا أخرى قد لا توجد أي نتائج على الإطلاق. ما أريد القيام به هو الحصول على أول نتيجة فقط إذا لم يكن هناك غيرها، أو تنفيذ دالة ما في حالة كان هناك أكثر من نتيجة أو لا يوجد نتائج على الإطلاق ما أريد القيام به مشابهة للتالي: result = session.query(User) if result > 1: return "more than one" elif result == 0: return "no results found" return jsonify(result) كيف أقوم بالتحقق مما إذا كان هناك نتيجة واحدة أو مجموعة من النتائج أو لا يوجد نتائج أبدًا؟
  6. أحاول الحصول على اسم الدالة التي يتم تنفيذها عند زيارة أحد المسارات حتى أقوم بعمل logger بسيط يخزن المسار واسم الدالة التي تم تنفيذها عند زيارة هذا المسار، فعلى سبيل المثال: @app.route("/") def foo(): # أريد الحصول على الكلمة foo كيف أحصل على اسم الدالة foo عند زيارة هذا المسار؟
  7. أقوم بالحصول على قائمة من المستخدمين عبر sqlalchemy من خلال الكود التالي: users = session.query(user.name).filter(and_(user.email == email, user.password == password_hash)) لكن كيف يمكنني أن أقوم بإرجاع أول مستخدم فقط يتم إيجاده وليس كل المستخدمين؟
  8. في مشروع فلاسك Flask لدي، يعمل أكثر من مسار على نفس الدالة، بالشكل التالي: @app.route("/users/") @app.route("/show-users/") def show_users(): .... كيف يمكنني الحصول على المسار الحالي الذي إستخدمه العميل للوصول إلى هذه الدالة؟ أي كيفية الحصول علىأحد المسارين /show-users/ أو /users/ داخل الدالة؟
  9. لدي تطبيق مبني بإستخدام React (عبر الأداة create-react-app) وقمت بتنفيذ الأمر npm run build لكي أحصل على ملفات المشروع النهائي، وأصبح لدي الملفات التالية: - build |- static | |- css | | |- style.css | | |- style.css.map | |- js | |- main.js | |- main.js.map |- index.html |- service-worker.js حاول أن أقوم بإضافة كل هذه الملفات في المجلد static الخاص بفلاسك لكي يمكن الوصول إليهم بدون كتابة مسارات routes مخصصة لهم، ثم قمت بعمل مسار لإرسال ملف index.html: @static.route('/') def serve_static_index(): return send_from_directory('../client/build/', 'index.html') لكن المشكلة الآن هو أن الموقع يعمل فقط إذا قام المستخدم بالدخول إلى الصفحة الرئيسية فقط، ولكن عند زيارة أي مسار مختلف (حتى وإن كان المسار موجود في تطبيق React عبر react-router-dom) فسوف يحصل على خطأ بعدم وجود هذا المسار. كيفية إرسال هذه الملفات عندما يزور المستخدم أي مسار في التطبيق؟
  10. أحاول أن أقوم بفصل النماذج models في تطبيق فلاسك Flask، لذلك قمت بنقلهم إلى ملفات مختلفة على النحو التالي: الملف الأول الذي يحتوي على كائن SQLAlchemy: # ./shared/db.py from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() ثم أقوم بإستدعاء الملف السابق في app.py: from flask import Flask from flask_sqlalchemy import SQLAlchemy from shared.db import db app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'My connection string is here' db.init_app(app) وفي نموذج user.py: from shared.db import db class User(db.Model): id = db.Column(db.Integer, primary_key=True) email_address = db.Column(db.String(300), unique=True, nullable=False) password = db.Column(db.Text, nullable=False) المشكلة الآن أنه عندما أحاول أن أقوم بإنشاء الجداول من خلال db.create_all يظهر لي الخطأ التالي: No application found. Either work inside a view function or push an application context. كيف يمكنني إستخدام التابع db.create_all بشكل سليم؟
  11. عندما أستعمل الدالة url_for بالشكل التالي: url_for('index') أحصل على " / " فقط، ولكن ما أريد الحصول عليه هو http://localhost:5000/ وليس مجرد علامة / فقط. هل يمكن التعديل على هذه الدالة للقيام بهذا الأمر أم توجد طريقة أخرى لتنفيذ هذه المهمة في فلاسك Flask؟
  12. حاولت تشغيل الكود التالي على خادم وكان يعمل بدون مشكلة: from flask_wtf import FlaskForm from wtforms import Form, StringField, PasswordField, validators, ValidationError from wtforms.fields.html5 import EmailField class BaseUserForm(FlaskForm): name = StringField('Name', [validators.DataRequired(), validators.Length(min=2, max=30)]) email = EmailField('Email', [validators.DataRequired(), validators.Email()]) ولكن عندما أقوم بتشغيل نفس المشروع على الحاسوب محليًا يظهر لدي الخطأ التالي: Exception: Install 'email_validator' for email validation support. كيف يمكنني حل هذه المشكلة؟
  13. كنت أستعمل قواعد بيانات MySQL ، ولكن هذه المرة الأولى التي أتعامل فيها مع SQLite وقمت بكتابة الكود التالي: @app.route('/api/v1/register', methods=['POST']) def register(): form = RegisterForm(request.form) if form.validate(): name = form.name.data email = form.email.data username = form.username.data password = form.password.data # هذا السطر يسبب خطأ c.execute("INSERT INTO users(name,email,username,password) VALUES(?,?,?,?)", [name, email, username, password]) conn.commit() conn.close() ولكن في كل مرة أقوم بزيارة هذا المسار يظهر لي الخطأ التالي: File "C:\Users\Mohssen\projects\blog\app.py", line 59, in register c.execute("INSERT INTO users(name,email,username,password) VALUES(?,?,?,?)", [name, email, username, password]) ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 24619 and this is thread id 23731 كيف يمكنني حل هذه المشكلة؟
  14. لدي مجموعة من الصور مخزنة في قاعدة بيانات MongoDB وحاولت أن أقوم بجلب أحد هذه الصور وإرسالها من خلال الكود التالي: @app.route("/images/<image_id>.jpg") def load_image(image_id): # يتم هنا جلب الصور في شكل bson.Binary return image_binary لكن يبدو أنه لا يمكن إرجاع قيمة ثنائية Binary من خلال فلاسك Flask. كيف يمكنني أن أقوم بإرجاع هذه الصور، هل يجب أن أقوم بتحويلها إلى base64 ثم إرجاع هذه القيمة أم يوجد طريقة أخرى؟
  15. ما هي الطرق الآمنة للحصول على SECRET_KEY لإستخدامه في التحكم في الجلسات sessions في فلاسك Flask؟ وكيف يمكنني إضافة هذا المفتاح إلى التطبيق بشكل صحيح؟
  16. أحاول أن أقوم بجعل الجلسة الخاصة بالمستخدم session تنتهي بعد مرور 15 دقائق فقط، هل توجد طريقة للتحكم في مثل هذا الأمر في الجلسات في فلاسك Flask؟ حاولت البحث في التوثيق الرسمي لكنني لم أجد شيء مفيد حول هذا الموضوع، أفكر في حفظ وقت آخر تفاعل للمستخدم في قاعدة بيانات ثم مقارنة هذا الوقت بالوقت الحالي عندما يقوم المستخدم بطلب أي مسار بعد ذلك ولكن أعتقد أن هذه الطريقة سوف تؤثر على أداء الموقع، هل توجد طريقة أسهل للقيام بهذا الأمر؟
  17. أنا أستخدم إطار فلاسك Flask وإستخدم قوالب jinja لعرض ملفات html الموجودة لدي، ولكن أريد أن أقوم بإضافة محتوى الملف footer.html داخل صفحة أخرى (index.html). هل يمكن القيام بهذا الأمر من خلال إستدعاء الملف footer.html؟
  18. الملفات مثل robots.txt و sitemap.xml من المفترض أن تكون في المسار الرئيسي للموقع: https://www.example.com/robots.txt https://www.example.com/sitemap.xml لكن المشكلة أنه عند إضافة مثل هذه الملفات في المجلد static، لا يمكن الوصول إليها إلا من خلال المسارات التالية: https://www.example.com/static/robots.txt https://www.example.com/static/sitemap.xml هل توجد طريقة لإضافة هذه الملفات في المجلد static، بحيث يمكن الوصول إليها بدون كتابة كلمة static في المسارات السابقة؟
  19. أحاول عرض بعض النصوص في أحد القوالب ولكن هذه النصوص تحتوي على عناصر تستعملها قوالب Jinja، كالتالي: <ul> {% for item in seq %} <li>{{ item }}</li> {% endfor %} </ul> وبالتالي سيتم ترجمة هذه النصوص على أساس أنها جزء من القالب، ولكن أريد عرضها كما هي. هل توجد طريقة تمكنني من عرض هذا النص كما هو بدون تنفيذه؟
  20. أحاول أن أقوم بعمل مسار يحتوي على معامل واحد ولكن يجب أن يحتوي هذا المعامل على بعض الشروط، مثل أن يكون طوله من 2 إلى 5 أحرف فقط، ولا يجب أن يكون بأي أحرف غير الإنجليزية والأرقام، أي يجب أن ينطبق على التعبير التالي: [a-zA-Z0-9]{2,5} هل يمكن القيام بهذا الأمر في فلاسك Flask أم يجب أن أقوم بإستقبال المعامل داخل الدالة والتحقق منه يدويًا؟
  21. كنت أتساءل عما إذا كانت هناك طريقة لأخذ شيء من عنصر input في HTML، وتمريره إلى فلاسك Flask، ثم تحليل تلك البيانات باستخدام Python. أعتقد أن هذا الأمر يحتاج إلى إستخدام JavaScript ولكن لست متأكد من هذا الأمر ولا أعلم كيف يمكنني القيام بهذا الأمر. هل يمكن القيام بهذا الأمر بدون إستخدام JavaScript؟
  22. عندما أقوم بتشغيل تطبيق مبني بإستخدام فلاسك Flask، فإن الخادم يعرض بعض الرسائل في موجهة الأوامر مثل التالي: 127.0.0.1 - - [18/Dec/2021 19:11:33] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [18/Dec/2021 19:11:33] "GET /static/styles/style.css HTTP/1.1" 404 - ... هل يمكن إيقاف هذه الرسائل بالكامل؟
  23. هل توجد طريقة لإرجاع رد إلى العميل ولا يعرض هذا الرد أي شيء في نافذة المتصفح، ما أحاول القيام به هو عمل مسار لتنفيذ دالة تقوم ببعض المهام على الخادم ولا أحتاج إلى عرض أي شيء في المتصفح. حاولت أن أقوم بإرجاع None، ولكن ظهر لي الخطأ التالي: TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement. كيف أقوم بإرجاع رد لا يعرض أي شيء في المتصفح؟
  24. يقوم فلاسك Flask بإستخدام المجلد static بشكل إفتراضي لكي يرسل ملفات CSS و JavaScript و الصور .. إلخ، ولكنني أريد أن أستخدم مجلد آخر مثل assets على سبيل المثال. هل توجد طريقة لتغير اسم المجلد الفتراضي من static إلى assets أو أي شيء آخر؟
  25. أريد الحصول على قيمة user agent الخاصة بمتصفح المستخدم لمعرفة إن كان يستخدم متصفح مختلف، لكن لم أجد أي شيء له علاقة بهذا الأمر في التوثيق الرسمي. كيف يمكنني الحصول على user agent في فلاسك Flask
×
×
  • أضف...