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

مسعود زاهي

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

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

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

  • عدد الأيام التي تصدر بها

    1

كل منشورات العضو مسعود زاهي

  1. مرحبا Rol lan، نحن هنا لا نحل الواجبات الخاصة بالطلاب ولكن نساعدهم في حلها من خلال توجيههم و إعانتهم. فإن أردت الإستفادة والتعلم أكثر فما عليك إلا محاولة كتابة الشيفرة البرمجية لوحدك حتى ولو كانت خطأ ثم وضعها هنا ونحن بدورنا - إن شاء الله - سوف نعينك على إصلاح الأخطاء الموجودة فيها. أكاديمية حسوب تحوي على مجموعة كبيرة من المقالات البرمجية في لغة جافا يمكنك الإستفادة منها من خلال هذا الرابط لغة جافا. تحياتي.
  2. مرحبا مجددا، قيمة Map التي يستقبلها القالب هي None أي فارغة. حتى نتمكن من مساعدتك أكثر يرجى إرفاق المشروع على شكل ملف مضغوط حتى نقوم بالإطلاع عليه ومعرفة سبب المشكلة. تحياتي،
  3. مرحبا زينة، لربط البيانات من النموذج Map مع القالب يجب توفر دالة عرض view ورابط url. في الشفرة التي قمت بإرفاقها انت تقومين باستيراد النموذج Map مباشرة داخل القالب وهذا خطأ. يجب أولا عمل دالة عرض view تقوم باستخراج البيانات من قاعدة البيانات وارسالها إلى القالب. مثال بسيط: دالة العرض view: def get_maps(request): maps = Map.objects.all() return render(request, "maps.html", {maps: maps}) الرابط url: from views import get_maps # نقوم باستيراد الدالة get_maps urlpatterns = [ path('maps', get_maps, name='google_maps'), ] شفرة القالب تصبح على الشكل التالي: <script> var request = { lat:{{maps.0.latitude}}, lng:{{maps.0.longitude}} }; console.log(request) service = new google.maps.places.PlacesService(map); service.findPlaceFromQuery(request, (results, status) => { if (status === google.maps.places.PlacesServiceStatus.OK && results) { for (let i = 0; i < results.length; i++) { createMarker(results[i]); } map.setCenter(results[0].geometry.location); } }); } window.initMap = initMap; </script> تحياتي،
  4. مرحبا مجددا عزوز، هل يمكنك إرفاق شيفرة الدالة كاملة مع ملف excel الذي تستخدمه. تحياتي.
  5. مرحبا عزوز، لم تقم بالتوضيح في أي سطر يقع الخطأ. تحياتي.
  6. مرحبا محمد، لربط ملفات python و c++ بملفات الواجهة الأمامية (Front End) تحتاج إلى أطر عمل (web Framworks ) مُخصصة لذلك فهي تساعد على تسريع بناء تطبيق الويب وحمايته كما أنها توفر ميزات إضافية يمكننا إضافتها دون بذل الكثير من العمل الإضافي. فمثلاً بالنسبة للغة البرمجة بايثون نجد أطر العمل التالية: Django. Flask. أما بالنسبة للغة البرمجية c++ فيمكن استخدام أطر العمل: TreeFrog. Silicon. توجد في أكاديمية حسوب عدة مقالات تشرح كيفية عمل بعضٍ من هذه الأطر: تعرف أكثر على إطار العمل Django من مجموعة المقالات. تعرف أكثر على إطار العمل Flask من مجموعة المقالات. بالتوفيق.
  7. مرحبا توفيق، المدرب يستعمل النسخة المدفوعة من البرنامج (PyCharm Professional) يمكنك تحميلها و تجريبها لمدة 30 يوم من الموقع الرسمي. أما النسخة المجانية فلا تتوفر على الخصائص التي ذكرتها. بالتوفيق.
  8. تقوم أولاً بتعريف رابط جديد في ملف urls.py، هذا الرابط يقوم بالربط بين القالب template الذي تضع فيه الزر ودالة العرض view على الشكل التالي: from django.urls import path from views import some_view#تقوم باستدعاء الدالة urlpatterns = [ #تقوم بإنشاء الرابط path('download-pdf', some_view, name="download-pdf"), ] تضيف الزر في القالب على شكل رابط: <a href="{% url 'download-pdf' %}" class="btn btn-default"> إضغط لتحميل الملف </a> عند ضغط المستخدم على الزر يقوم المتصفح بزيارة الرابط وتحميل الملف. تحياتي.
  9. مرحبا Zx Zx2، لإنشاء ملف PDF وتحميله ينصح باستخدام مكتبة بايثون ReportLab. لتحميل المكتبة واستعمالها في بايثون: pip install reportlab الشيفرة التالية تبين كيفية استعمال هذه المكتبة لإنشاء ملف PDF يحتوي على الجملة Hello world: import io from django.http import FileResponse from reportlab.pdfgen import canvas def some_view(request): # إنشاء ذاكرة مؤقتة لتخزين البيانات قبل حفظهافي ملف buffer = io.BytesIO() # إنشاء كائن الملف باستخدام مكتبة # reportlab p = canvas.Canvas(buffer) # الكتابة على الملف p.drawString(100, 100, "Hello world.") # غلق كائن الملف وحفظه p.showPage() p.save() # إرسال الملف إلى العميل لتحميله buffer.seek(0) return FileResponse(buffer, as_attachment=True, filename='hello.pdf') بالتوفيق.
  10. نلاحظ أن هاته الدوال ليست دوال تابعة لكائن من الصنف Product وإنما تابعة للصنف ككل. لهذا يمكن إنشاء هذه الدوال على شكل دوال ساكنة static method بحيث يمكننا إستدعاؤها على الشكل التالي: ArrayList<Product> products = Product.search("نكتب هنا كلمة البحث", allProducts); // حيث // allProducts هو مصفوفة كل المنتجات Product selectedProduct = Product.select(1, allProducts); ArrayList<Product> products = Product.order(allProducts);
  11. يمكنك استخدام إطار العمل flask لانشاء الواجهة البرمجية فهو من بين أفضل أطر العمل وأسهلها في بايثون. نعم لإرسال البيانات من الموقع الأول إلى الواجهة البرمجية سوف تحتاج إلى جافاسكربت.
  12. الأفضل في هذه الحالة أنك تقوم بإنشاء واجهة برمجية API تعمل على إستقبال البيانات ومعالجتها ثم حفظها في قاعدة البيانات. في الموقع الأول تقوم بإنشاء نموذج Form وعند قيام العميل بإرسال البيانات تقوم بإرسال البيانات على شكل JSON إلى الواجهة البرمجية.
  13. مرحبا Ra All، قم بمحاولة كتابة هذه الكلاس لوحدك فهي بسيطة وضع الشيفرة هنا كي نساعدك ونوجهك. تحياتي.
  14. يمكنك استخدام إطار العمل Flask لإرسال بيانات نموذج من html إلى بايثون وهذا مثال بسيط لكيفية عمل ذلك: تثبيت إطار العمل flask باستخدام pip: pip install flask إنشاء النموذج في القالب html وليكن اسم القالب create.html: <form action="/posts/create" method="post"> <label>عنوان المقالة</label> <br/> <input type="text" name="title"> <br/> <label>متن المقالة</label> <br/> <textarea name="body" col="50" rows="10"></textarea> <br/> <button type="submit">إنشاء المقالة</button> </form> إستقبال البيانات باستخدام إطار العمل flask: from flask import Flask, request, render_template app = Flask(__name__) @app.route("/posts/create", method=["GET", "POST"]) def create(): if request.method="POST": #قراءة البيانات من الكائن request title = request.form['title'] body = request.form['body'] # يمكنك الان استعمال البيانات # او حفظها في قاعدة البيانات return render_template("create.html") تعرّف أكثر على كيفية التعامل مع النماذج في Flask من مقالة:
  15. الشيفرة صحيحة من حيث الكتابة لا يوجد بها أخطاء. حاولي طبع حجم المصفوفة قبل الدخول إلى الحلقة for: System.out.println(products_array.length); والتأكد من أن حجمها أكبر من الصفر. الطبع يظهر في النافذة Output، ولإظهار هذه النافذة نذهب إلى Window ثم نختار Output. تحياتي.
  16. نعم كُنت قد أخطأت في كتابة الشيفرة. الشيفرة الصحيحة هي: products_list.toArray(products_array); أي القائمة هي التي نحولها إلى مصفوفة وليس العكس. بالتوفيق.
  17. مرحبا شهد، المصفوفة ( Array ) عبارة عن كائن يحتوي مجموعة عناصر من نفس النوع تتخزن بجوار بعضها في الذاكرة. بمعنى آخر المصفوفة عبارة عن كائن يمكنه تخزين عدة قيم من نفس النوع. المشكلة الوحيدة في الـ Array هو أن حجمها ثابت, أي عندما تقوم بتعريف مصفوفة و تحدد عدد عناصرها, لا يمكنك تغيير حجمها لاحقاً, أي لا يمكن حذف عنصر أو زيادة واحد جديد. لهذا يستحسن إستعمال ArrayList وبعدها تحويله إلى مصفوفة Array باستخدام الدالة toArray: // نقوم بتعريف كائن ال ArrayList ArrayList<Products> products_list = new ArrayList<>(); //نقوم بتعريف المننتجات Products A =new Products("Ipad",4000.500); Products B =new Products("Appile Pinsil",750.00); Products C =new Products("earpod",800.00) //نقوم بإضافة المنتجات إلى ال ArrayList products_list.add(A); products_list.add(B); products_list.add(C); //نقوم بتعريف المصفوفة Products[] products_array = new Products[products_list.size()]; //نحول القائمة إلى مصفوفة products_array.toArray(products_list); تحياتي،
  18. توثيق جانغو لا ينصح بتغيير التابع __init__ في النماذج (Models) ﻷنه قد يؤدي إلى خلل في حفظ البيانات وإنما ينصح ب: إنشاء دالة ثابتة (classmethod) في النموذج: class Post(models.Model): .... @classmethod def create(cls, title, content, description): post = cls(title=title, content=content, description=description) return post ويتم استدعاؤها على الشكل التالي: p = Post.create('my post title','some content', 'summary of the post') إضافة تابع إلى مدير النموذج (Manager) - عادةً هذا ما ينصح به- : #نقوم بإنشاء مدير مخصص class PostManager(models.Manager): def create_post(self, title, content, description): post = self.create(title=title, content=content, description=description) return post class Post(models.Model): ... #تعيين مدير النموذج objects = PostManager() ويتم استدعاء هذا التابع على الشكل التالي: p = Post.objects.create_post('my post title','some content', 'summary of the post')
  19. لمنع المتصفح من تخزين العرض في ذاكرة التخزين المؤقت (Cache) يمكنك استعمال المزخرف never_cache والذين يقوم بإضافة الترويسات: Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private إلى الرد (Response) تُخبر المتصفح بعدم تخزين الصفحة. أما كيفية استخدام هذا المزخرف في العرض فهو كالتالي: # نقوم باستدعاء المزخف from django.views.decorators.cache import never_cache #نضع المزخرف فوق دالة العرض @never_cache def myview(request): ...
  20. توجد طريقتان لجعل حقل إختياري في نموذج من نوع ModelForm في جانغو: الطريقة الأولى إعادة كتابة الحقل في النموذج وإضافة الخاصية required=False له: class DetailsForm(ModelForm): name = forms.CharField(required=False) #أعدنا كتابة الحقل وجعله إختياري class Meta: model = Details def __init__(self, *args, **kwargs): super(DetailsForm, self).__init__(*args, **kwargs) # كيفية جعل هذه الحقول إختيارية self.fields['name'].widget = widgets.AdminSplitDateTime() self.fields['email'].widget = widgets.AdminSplitDateTime() الطريقة الثانية: إضافة الخاصية required=False للحقل من خلال الدالة init: class DetailsForm(ModelForm): class Meta: model = Details def __init__(self, *args, **kwargs): super(DetailsForm, self).__init__(*args, **kwargs) # self.fields['name'].widget = widgets.AdminSplitDateTime() self.fields['email'].widget = widgets.AdminSplitDateTime() # جعل الحقول اختيارية self.fields['name'].required = False self.fields['email'].required = False
  21. حالياً لا يوجد حقل في جانغو يُمَكّننا من حفظ مجموعة من الصور معاً. بدلاً من ذلك يُمكنك إنشاء نموذج تحفظ فيه الصور وتقوم بربطه بالمُنتج عن طريق علاقة واحد إلى مُتعدد على الشكل التالي: # نموذج المنتج class Product(models.Model): """ """ #نموذج صور المُنتج class ProductImage(models.Model): image = models.ImageField(upload_to="products/") # نقوم بربط الصورة بالمُنتج عن طريق علاقة واحد إلى كثير product = models.ForeignKey("Product", on_delete=models.CASCADE, related_name="images") للحصول على صُور منتج ما نقوم ب: >>> product1 = Product.objects.get(id=1) # للحصول على كل صور المنتج نقوم ب >>> product1.images.all()
  22. عليكم السلام ورحمة الله وبركاته، مرحبا Am Design، سؤالك غير واضح، قُم بتوضيحه أكثر حتى نستطيع مُساعدتك.
  23. مرحبا ابراهيم، يُشير الخطأ 431 إلى أن الخادم يرفُض معالجة الطلب ﻷن ترويسة ال HTTP الخاصة بالطلب طويلة جدًا وهذا يرجع إلى أمرين: إما أن الحجم الإجمالي لعناصر الترويسة كبيرًا جدًا. أو عندما يكون حقل من عناصر الترويسة ذا حجم كبيرًا جدًا يمكن إعادة تقديم الطلب بعد تقليل حجم الترويسة. الحالات التى تسبب هذا الخطأ: عنوان URL المرجعي (Referer URL) طويل جدًا. يوجد عدد كبير جدًا من ملفات تعريف الارتباط (Cookies) المُرسلة في الطلب.
  24. لإجبار محرك قوالب جانغو على تجاهل جزء من الشيفرة وعرضه كما هو من غير مُعالجة يمكننا كتابة هذه الشيفرة داخل الكتلة verbatim: {% verbatim %} <p> النص بداخل هذه الكتلة سيتم تجاهله من طرف محرك قوالب جانغو وسيقوم بعرضه كما هو </p> <p>{{ some text }}</p> {% endverbatim %} كما يحتوي جانغو على وُسُوم قوالب (template tags) تعمل على كتابة بعض من الرموز الخاصة، مثلاً لكتابة الرمز الخاص {% نستعمل وسم القالب: The {% templatetag openblock %} characters open a block. والنتيجة تكون: the {% characters open a block. مثلاً لو أردنا إظهار {{ some text }} في القالب نكتب: {% templatetag openvariable %} some text {% templatetag closevariable %}
×
×
  • أضف...