-
المساهمات
510 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
5
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Ahmed Sadek Elamine Touahria
-
Repeater - يعمل مكرر في الطبقة المادية. وتتمثل مهمتها في إعادة توليد الإشارة على نفس الشبكة قبل أن تصبح الإشارة ضعيفة للغاية أو تالفة وذلك لتمديد الطول الذي يمكن أن تنتقل إليه الإشارة عبر نفس الشبكة. من النقاط المهمة التي يجب ملاحظتها حول أجهزة إعادة الإرسال أنها لا تقوم بتضخيم الإشارة. عندما تصبح الإشارة ضعيفة ، يقومون بنسخ الإشارة شيئًا فشيئًا وإعادة توليدها بالقوة الأصلية. إنه جهاز ذو منفذين. Hub - هو في الأساس مكرر متعدد المنافذ. يربط المحور أسلاكًا متعددة قادمة من فروع مختلفة ، على سبيل المثال ، الموصل في الهيكل النجمي الذي يربط المحطات المختلفة. لا تستطيع الموزعات تصفية البيانات ، لذلك يتم إرسال حزم البيانات إلى جميع الأجهزة المتصلة. بمعنى آخر ، يظل مجال التصادم لجميع المضيفين المتصلين من خلال Hub واحدًا. أيضًا ، ليس لديهم الذكاء لمعرفة أفضل مسار لحزم البيانات مما يؤدي إلى عدم الكفاءة والهدر. ينقسم إلى 3 أنواع Active و Passive و Intelligent Bridge (الجسر) - يعمل في طبقة ارتباط البيانات. الجسر عبارة عن مكرر ، مع إضافة وظيفة تصفية المحتوى من خلال قراءة عناوين MAC الخاصة بالمصدر والوجهة. كما أنها تستخدم لربط شبكتين محليتين تعملان على نفس البروتوكول. يحتوي على مدخل واحد ومنفذ إخراج فردي ، مما يجعله جهاز ذو منفذين. ينقسم الى نوعين Transparent و Source Routing Bridges switch (المحول) - المحول عبارة عن جسر متعدد المنافذ مزود بمخزن مؤقت وتصميم يمكنه تعزيز كفاءته (عدد كبير من المنافذ يعني حركة مرور أقل) وأدائه. المفتاح هو جهاز طبقة ارتباط البيانات. يمكن للمحول إجراء فحص الأخطاء قبل إعادة توجيه البيانات ، مما يجعله فعالاً للغاية لأنه لا يقوم بإعادة توجيه الحزم التي تحتوي على أخطاء وإعادة توجيه الحزم الجيدة بشكل انتقائي إلى المنفذ الصحيح فقط. بمعنى آخر ، يقسم المحول مجال تصادم المضيفين ، لكن مجال البث يظل كما هو. router(الموجهات) - جهاز التوجيه هو جهاز مثل المحول الذي يوجه حزم البيانات بناءً على عناوين IP الخاصة بها. جهاز التوجيه هو جهاز طبقة الشبكة بشكل أساسي. عادةً ما تقوم أجهزة التوجيه بتوصيل شبكات LAN و WAN معًا ولديها جدول توجيه محدث ديناميكيًا بناءً على اتخاذ القرارات بشأن توجيه حزم البيانات. يقسم جهاز التوجيه مجالات البث للمضيفين المتصلين من خلاله. يمكنك تصفح المزيد حول الشبكات من خلال الرابط ادناه https://academy.hsoub.com/devops/networking/
- 1 جواب
-
- 1
-
أوبونتو والبرمجة تعد Ubuntu منصة تطوير رائعة. يمكنك البرمجة بسهولة بـ C / C ++ و java و fortran و python و perl و php و ruby و tcl و lisp ... وغيرها الكثير. عادة ما تكون لغات البرمجة النصية سهلة التعلم والاستخدام. يطلق عليهم لغات البرمجة النصية لأنه يتم ترجمتها بدلاً من تحويلها إلى لغة الآلة مثل C / C ++ على سبيل المثال. PHP PHP هي اللغة التي تضع حرف P في LAMP ، وهي التكنولوجيا التي تدير معظم الإنترنت (Linux ، Apache ، mySQL ، PHP). PHP هي لغة قوية ومرنة ، يتم استخدامها على نطاق واسع لتشغيل مواقع الويب عالية الأداء مثل Facebook و Yahoo ، ولكنها أيضًا رائعة لكتابة البرامج النصية لمدير النظام أيضًا. جافاسكريبت كانت لغة الجافاسكريبت موجهة للمبرمجين الهواة وغير المحترفين، إلا أنه تزايد الاهتمام بها وجذبت اهتمام مبرمجين محترفين بعد إضافتها لتقنيات جديدة كانتشار تقنية أجاكس التي أدت إلى سرعة في التفاعل بين الخادم والعميل. بايثون يأتي Ubuntu مع Python والعديد من وحدات الامتداد. Python قوية جدًا وسهلة الاستخدام. في الواقع هي اللغة المفضلة لمعظم مطوري Ubuntu. يمكنك بسهولة اللعب مع بيثون بشكل تفاعلي. روبي روبي هي "لغة برمجة ديناميكية ومفتوحة المصدر تركز على البساطة والإنتاجية. ولديها تركيب أنيق وطبيعي للقراءة وسهلة الكتابة." C و C ++ C ليست عادة لغة رائعة لبدء البرمجة بها ولكنها أقوى لغة برمجة في الاستخدام الشائع. إذا كنت بحاجة إلى السرعة والكفاءة ، فإن C هو الخيار الأفضل. نواة Linux ، قلب نظام التشغيل Ubuntu ، مكتوبة في C. C ++ هي في الغالب امتداد لـ C. C ++ لها الميزة الرئيسية لكونها لغة موجهة للكائنات dart هي لغة برمجة مصممة لتطوير تطبيقات الويب وتطبيقات الاندرويد والios، من تطوير شركة جوجل والتي تستهدف فيها مطوري الويب وتطبيقات الهاتف وسطح المكتب أحد أهداف اللغة بأن تعمل على جميع متصفحات الويب المتقدمة والأجهزة المحمولة وصولاً إلى خوادم الويب.ما يميز اللغة هو إمكانية كتابة برنامج ونشره على أجهزة أندرويد وآيفون دون إعادة كتابة التطبيق بلغة أخرى
-
أولاً ، توضيح للمصطلحات: نقوم بتعيين كائن Child إلى متغير من النوع Parent. الأصل هو إشارة إلى كائن يحدث ليكون نوعًا فرعيًا من Parent ، Child. إنه مفيد فقط في مثال أكثر تعقيدًا. تخيل أنك أضفت getEmployeeDetails إلىclass Parent: public String getEmployeeDetails() { return "Name: " + name; } يمكننا عمل override على هذه الدالة في الطفل لتقديم مزيد من التفاصيل: @Override public String getEmployeeDetails() { return "Name: " + name + " Salary: " + salary; } يمكنك الآن كتابة سطر واحد للحصول على أي تفاصيل متاحة ، سواء كان الكائن أحد Parent أو child: parent.getEmployeeDetails(); مثال بسيط Parent parent = new Parent(); parent.name = 1; Child child = new Child(); child.name = 2; child.salary = 2000; Parent[] employees = new Parent[] { parent, child }; for (Parent employee : employees) { employee.getEmployeeDetails(); } يعطينا Name: 1 Name: 2 Salary: 2000
-
للأسف لا يمكن ذلك إلا بحزمة أو serive تقدمها أحد الشركات مثل google recaptcha ، وأنا أنصحك ب f_grecaptcha يسمح هذا المكون الإضافي flutter البسيط باستخدام SafetyNet API على أجهزة Android للتحقق من أن المستخدم إنسان. كيفية إستعمالها في تطبيقك قم بتضمين المكون الإضافي في تبعيات مشروعك عن طريق تضمينه في القسم ذي الصلة من pubspec.yaml الخاص بك: dependencies: f_grecaptcha: ^1.0.0 بعد ذلك ، ستحتاج إلى تسجيل تطبيقك في وحدة تحكم مسؤول reCAPTCHA. انتقل إلى https://www.google.com/recaptcha/admin#list وقم بالتسجيل عن طريق ملء النموذج. تأكد من تحديد "reCAPTCHA-Android" كنوع. بعد تسجيل تطبيقك في reCAPTCHA API ، يمكنك استدعاء الطريقة التالية في أي مكان في رمز dart الخاص بك ، والأكثر شيوعًا بعد الضغط على الزر. استبدل SITE_KEY بمفتاح الموقع الذي تعرضه واجهة المسؤول بعد تسجيل تطبيقك. FGrecaptcha.verifyWithRecaptcha(SITE_KEY).then((result) { // يمكنك إرسال رمز النتيجة ، مع بعض حقول النموذج ، إلى ملف // reCAPTCHA API for servers, see https://developers.google.com/recaptcha/docs/verify }, onError: (e, s) { // لا يعني الخطأ أن المستخدم ليس بشريًا. أخطاء // يمكن أن يحدث أيضًا عندما يكون مفتاح الموقع غير صالح أو لا يتطابق مع // التطبيق ، عندما يكون الجهاز غير مدعوم أو عندما تكون الشبكة // يحدث خطأ. // يجب عليك إبلاغ المستخدم بالأخطاء ، وشرح سبب عدم تمكنه من ذلك // تخطي خطوة reCAPTCHA عندما يكون FGrecaptcha.isAvailable خاطئًا. print("لم نتمكن من التحقق:\n $e at $s"); } );
- 2 اجابة
-
- 1
-
لعمل custom permission بواسطة django rest framework يرجى إتباع هذه الخطوات إنشاء ملف نسميه permission.py ثم نستدي المكتبات التي تتيح لنا عمل هذه الخاصية from rest_framework import permissions class IsOwnerOrReadOnly(permissions.BasePermission): """ مثال على مصادقة أو إذن حيث يسمح فقط لمالك الحساب او بما يسمى owner """ def has_object_permission(self, request, view, obj): # يُسمح بأذونات القراءة لأي طلب مسموح if request.method in permissions.SAFE_METHODS: return True # يجب أن يكون الكائن هو نفسه return obj.owner == request.user بحيث يُسمح فقط لمالك الحساب على التعديل مثلا على البروفيل الخاص به ولا يُسمح لأي أحد بفعل ذلك .
- 1 جواب
-
- 1
-
يرجى تحديد نوع الإستضافة ، إذا كانت vps او غير ذلك وأيضا نظام تشغيل الإستضافة ...، حتى نستطيع مساعدتك
- 6 اجابة
-
- 1
-
أقترح ، قبل إنشاء مشروع vue cli ، ترقية node.js و npm إلى أحدث الإصدارات المتاحة. عبر هذا الأمر npm i -g npm-check-updates ولفهم المشكلة قم بتشغيل هذا الأمر npm audit fix
-
المشكلة في مسار قاعدة البيانات import 'package:path/path.dart' as p; Future<Database> initializeDatabase() async { //جلب المسار من الجهاز var databasesPath = await getDatabasesPath(); String path = p.join(databasesPath, 'your_db_name.db'); var cardDatabase = await openDatabase(path, version: 1, onCreate: _createDb); return cardDatabase; } لا تنس تغيير إعدادات الـ pubspec.yaml : dependencies: flutter: sdk: flutter path: any
-
بالإضافة إلى إجابة الأخ عمر ، الأمر أعمق بكثير ، فالفرق بين let و var قد يمتد إلى جذور compiling ، سأختصرها في هذه الأسطر Scoping rules أو الأقواس المتجعدة قد أجاب عليها الأخ @عمر قرة محمد Hoisting بينما يتم رفع المتغيرات المعلنة باستخدام كلمة var (تهيئتها بـ undefined قبل تشغيل الكود) مما يعني أنه يمكن الوصول إليها في نطاقها المرفق حتى قبل إعلانها: function run() { console.log(a); // undefined var a = "ahmed"; console.log(a); // ahmed } run(); إنشاء خاصية الكائن global :في المستوى الأعلى ، let ، على عكس var ، لا يُنشئ خاصية على الكائن العام: var a = "ahmed"; // globally scoped let b = "sadek"; // لا يستطيع أن يكون عام console.log(window.a); // ahmed console.log(window.b); // undefined إعادة إعلان أو Redeclaration : في الوضع الصارم ، سيسمح لك var بإعادة التصريح عن نفس المتغير في نفس النطاق بينما يقوم let بإثارة خطأ SyntaxError.
-
بوابة stripe من أفضل بوابات الدفع التي تعاملت معها وذلك لسهولة التعامل معها . لتقوم بدمج هذه الأخيرة مع مشروع جانغو عليك باتباع بعض الخطوات الأساسية . ضبط إعدادات stripe pip install stripe pip freeze > requirements.txt توجه إلى الرابط الموضح أدناه واحصل على مفتاح Stripe العام ومفتاح Stripe السري. https://dashboard.stripe.com/test/apikeys قم بإنشاء متغيرين في file settings.py وأضفهما هناك. STRIPE_PUBLIC_KEY = "pk_test_sdasda7dyasdsa7dysadsahdas7dysa" STRIPE_SECRET_KEY = "sk_test_sd87da87d78sagsadas7dasv2e378e7" انتقل إلى https://dashboard.stripe.com/test/products/create وأنشئ منتجًا جديدًا بدفع دفعة واحدة كما هو موضح أدناه. الآن سنحتاج إلى إضافة طرق عرض لاستدعاء StripeAPI لإنشاء جلسة تسجيل الخروج. سنحتاج إلى إضافة متغير آخر في.setting.py بالاسم BASE_URL وتعيين قيمته على http://127.0.0.1:8000. بالإضافة إلى ذلك ، أضف الكود التالي إلى views.py من تطبيق المدفوعات. import stripe from django.conf import settings from django.shortcuts import redirect from django.views import View from payments.models import Price stripe.api_key = settings.STRIPE_SECRET_KEY class CreateCheckoutSessionView(View): def post(self, request, *args, **kwargs): price = Price.objects.get(id=self.kwargs["pk"]) checkout_session = stripe.checkout.Session.create( payment_method_types=['card'], line_items=[ { 'price': price.stripe_price_id, 'quantity': 1, }, ], mode='payment', success_url=settings.BASE_URL + '/payments/success/', cancel_url=settings.BASE_URL + '/payments/cancel/', ) return redirect(checkout_session.url) class SuccessView(TemplateView): template_name = "success.html" class CancelView(TemplateView): template_name = "cancel.html" لا تنس إضافة النماذج الخاصة بهم أيضًا. <html> <head> <title>شكرا لإتمام طلبك!</title> </head> <body> <section> <p> سنتصل بك عندما نتحقق من الطلب </p> <a href="{% url 'home' %}">الرجوع</a> </section> </body> </html> <html> <head> <title>إلغاء</title> </head> <body> <section> <p>هل نسيت معلومات بطاقتك <a href="{% url 'home' %}">أعد المحاولة</a></p> </section> </body> </html> ملف urls.py from django.urls import path from payments.views import CancelView, SuccessView, CreateCheckoutSessionView urlpatterns = [ path('cancel/', CancelView.as_view(), name='cancel'), path('success/', SuccessView.as_view(), name='success'), path('create-checkout-session/<pk>/', CreateCheckoutSessionView.as_view(), name='create-checkout-session') ] إضافة دالة عرض جديدة في views.py من تطبيق المدفوعات. class HomePageView(TemplateView): template_name = "home.html" def get_context_data(self, **kwargs): product = Product.objects.get(name="Basic Plan") prices = Price.objects.filter(product=product) context = super(HomePageView, self).get_context_data(**kwargs) context.update({ "product": product, "prices": prices }) return context from django.contrib import admin from django.urls import path, include from payments.views import HomePageView urlpatterns = [ path('admin/', admin.site.urls), path('payments/', include('payments.urls')), path('', HomePageView.as_view(), name='home') ] وفي الأخير نعرضها في صفحة html <!DOCTYPE html> <html> <head> <title>Buy now</title> <link rel="stylesheet" href="style.css"> <script src="https://polyfill.io/v3/polyfill.min.js?version=3.52.1&features=fetch"></script> <script src="https://js.stripe.com/v3/"></script> </head> <body> <section> <div class="product"> <div class="description"> <h3>{{ product.name }}</h3> <hr /> {% for price in prices %} <div> <h5>${{ price.price }}</h5> <form action="{% url 'create-checkout-session' price.id %}" method="POST"> {% csrf_token %} <button type="submit">دفع</button> </form> </div> {% endfor %} </div> </div> </section> </body> </html>
- 1 جواب
-
- 1
-
بصراحة هناك حزمة ممتازة لعمل search إحترافي مثل whatsapp search وغيرها . إسم الحزمة wp_search_bar ، وهذه طريقة عملها : تحميل الحزمة $ dart pub add wp_search_bar تأكد من وجودها في dependencies dependencies: wp_search_bar: ^0.0.5 تحديد البيانات التي تريد إظهارها في عرض القائمة List<Map<String, String>> data = [ {'name': "Mohammad", 'message': "message from mhammad"}, {'name': "Kamel", 'message': "message from kamel"}, {'name': "Nadine", 'message': "how are you ?"}, {'name': "Joseph", 'message': "hello...!"}, {'name': "71966691", 'message': "Hi"}, {'name': "03405609", 'message': "hiiii...."}, {'name': "Mohammad", 'message': "message from mhammad"}, {'name': "Kamel", 'message': "message from kamel"}, {'name': "Nadine", 'message': "how are you ?"}, {'name': "Joseph", 'message': "hello...!"}, {'name': "71966691", 'message': "Hi"}, {'name': "03405609", 'message': "hiiii...."}, ]; تحديد الأزرار التي يجب استخدامها في شريط البحث. var buttonFilters = { 'name': { 'name': 'name', 'selected': false, 'title': 'Name', 'operation': 'CONTAINS', 'icon': Icons.supervised_user_circle_rounded, }, 'message': { 'name': 'message', 'selected': false, 'title': 'Message', 'operation': 'CONTAINS', 'icon': Icons.message, }, 'date': { 'name': 'Date', 'selected': false, 'title': 'Date', 'operation': 'CONTAINS', 'icon': Icons.date_range, }, 'other': { 'name': 'other', 'selected': false, 'title': 'Other', 'operation': 'CONTAINS', 'icon': Icons.more, }, }; بناء شريط البحث @override Widget build(BuildContext context) { return MaterialApp( home: WPSearchBar( listOfFilters: buttonFilters, materialDesign: const { 'title': {'text': 'hsoub'}, }, onSearch: (filter, value, operation) { }, body: Container( decoration: const BoxDecoration(color: Color(0xff121b22)), child: ListView.builder( itemCount: filteredData.length, itemBuilder: (context, index) { var item = filteredData[index]; return ListTile( title: Text( item['name'].toString(), style: const TextStyle( color: Colors.white, fontWeight: FontWeight.bold), ), ); }), ), ), ); } }
- 2 اجابة
-
- 1
-
ما شاء الله ، فقط حاول ان تغير نوع الخط وتناسق الألوان . يمكنك الإثراء من التغذية البصرية من خلال تصفح المزيد من المواقع الإحترافية وخاصة portfolios
-
لا يمكنك تضمين ملفاتك مباشرة من Github بعد هذا التغيير . يمكن القيام بذلك باستخدام عنوان URL مشابه لهذا: https://rawgit.com/h5bp/html5-boilerplate/master/src/js/plugins.js لاحظ أن هذا يختلف عن النقر فوق الزر "raw" داخل GitHub ؛ سيعطيك هذا الزر أيضًا نسخة نظيفة من الملف ، ولكن سيتم إرساله ب headers خاطئة. للتحذير؛ لا يتم تقديم الملف من GitHub. تتم إعادة توجيهه من خلال مجال rawgit.com. كما هو مذكور في rawgit حل 2: بعد تمكين صفحات GitHub من المستودع الخاص بك ، استخدم الرابط التالي: <script src="https://[username].github.io/[repository]/[filename].js"></script> ملاحظة فقط هذه الحلول ليست 100% لأن الأمور تختلف من حساب لأخر ومن دولة إلى أخرى
-
إن من الأفضل فصل الإعدادات عن بعضها بحيث يساعد في عملية deployment وحتى التوثيق الرسمي لجانغو يوصي بهذا : إنشاء مجلد نسميه settings ننشأ ملف داخل المجلد settings ونسميه __init__ ثم ننسخ كل ماهو في ملف settings وننسخه في __init__ ، ثم نحذف ملف settings.py ننشأ ملف أخر ونسميه production.py ونضع فيه الأتي from . import * SECRET_KEY = '-~aO;| F;rE[??/w^zcumh(9' # DEBUG = False ALLOWED_HOSTS = [''] # الأيبي والدومين لي رح تستعملهم في هذا المشروع DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', # 'NAME': 'db_name', # إسم قاعدة البيانات 'USER': 'user_name', # إسم المستخدم 'PASSWORD': 'password',# كلمة السر 'HOST': '127.0.0.1', 'PORT': '5432', } } ثم بعد ذلك نغير سطر مهم جدا في ملف __init__ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) بعد ذلك نضيف ملف production.py الى .gitignore لتجنب الأخطاء
- 1 جواب
-
- 1
-
للحصول على التاريخ الهجري الحالي في جافا سكريبت ، نستخدم تنسيق Intl.DateTimeFormat المعتمد Native Internationalization : للحصول على التاريخ باللغة العربية: new Intl.DateTimeFormat('ar-TN-u-ca-islamic', {day: 'numeric', month: 'long',weekday: 'long',year : 'numeric'}).format(Date.now()); يظهر لنا > "الثلاثاء، 15 جمادى الآخرة 1440" أو باللغة الفرنسية: new Intl.DateTimeFormat('fr-TN-u-ca-islamic', {day: 'numeric', month: 'long',weekday: 'long',year : 'numeric'}).format(Date.now()); يمكنك تغيير إلى أي لغة أخرى من خلال تغيير الوسيط الأول أو يمكنك استخدام jQuery plugin
-
NaN في JavaScript اختصار لـ "Not-a-Number" ، ترجع دالة isNaN () t صحيح إذا كانت القيمة NaN وكما تقوم أيضابتحويل القيمة إلى رقم قبل اختبارها. الفرق بين ()isNan و ()Number.isNan : دالة الـ isNaN () ترجع صحيحًا إذا كانت القيمة ليست رقمًا. تُرجع الدالة Number.isNaN () صحيحًا إذا كان الرقم ليس رقمًا. بعبارة أخرى: isNaN () يحول القيمة إلى رقم قبل اختبارها. مثال // ترجع صحيحا; isNaN('مرحبا'); //false // ترجع خطأ; Number.isNaN('مرحبا');//false إليك المقال أدناه للمزيد عن isNaN https://wiki.hsoub.com/JavaScript/isNaN
- 3 اجابة
-
- 1
-
نعم أنت بحاجة إلى مصدر بيانات لا يهم هل api او sqlite ..... على سبيل المثال ، قد يكون مصدر البيانات الخاص بك عبارة عن قائمة من الرسائل أو نتائج البحث أو المنتجات في متجر. في معظم الأحيان ، تأتي هذه البيانات من الإنترنت أو من قاعدة بيانات.
- 7 اجابة
-
- 1
-
نعم ، Listview.builder في الفلاتر معمولة من أجل البيانات الكبيرة فهي تعمل على مبدأ العرض المناسب في كل مرة ، معناه أنو مثلا عملت إستعلام للبيانات حجمها 10000 أو أكثر فهنا Listview.builder تقوم ببناء عرض البيانات 50 الأولى لما المستخدم يعمل scroll مثلا أو اي event تختفي 50 البيانات الأولى ويتم بناء 50 البيانات الثانية وهكذا .. الفرق الرئيسي بين ListView و ListView.builder يتطلب مُنشئ ListView منا إنشاء جميع العناصر مرة واحدة. يعد هذا أمرًا جيدًا عندما تكون عناصر القائمة أقل وستظهر جميعها على الشاشة ، ولكن إذا لم يكن الأمر كذلك بالنسبة لعناصر القائمة الطويلة ، فهذا ليس ممارسة جيدة. بينما سيقوم مُنشئ ListView.Builder بإنشاء عناصر أثناء تمريرها على الشاشة مثل عند الطلب. هذه هي أفضل ممارسة لتطوير عنصر واجهة مستخدم القائمة حيث لن يتم عرض العناصر إلا عند ظهور العناصر على الشاشة.
- 7 اجابة
-
- 1
-
أولا ip هو معرّف فريد يُستخدم لإرسال واستقبال البيانات من الإنترنت على أجهزتنا. سنقوم بعمل وظيفتين من شأنها مساعدتنا في الحصول على عنوان IP الخاص بالمستخدم. حدد دالتين في views.py والتي ستخزن عنوان IP وإظهاره كمخرج. from django.shortcuts import render def get_ip_address(request): user_ip_address = request.META.get('HTTP_X_FORWARDED_FOR')#نستخدم الإستعلام ميتا للحصول على تصريح if user_ip_address: ip = user_ip_address.split(',')[0] # ثم نفصل الأيبي عن باقي البيانات else: ip = request.META.get('REMOTE_ADDR') return ip # ثم نظهرها في الواجهة def show_ip_address(request): user_ip = get_ip_address(request) return render(request, "output.html", {"user_ip":user_ip}) تأكد من تكوين الخادم reverse proxy (إن وجد) بشكل صحيح (على سبيل المثال ، تم تثبيت mod_rpaf على Apache سيرفر). أو يمكنك تثبيت حزمة جاهزة للقيام بهذا الشيء مثل django-ipware عبر الأمر التالي pip install django-ipware ثم في ملف views.py from ipware import get_client_ip ip, is_routable = get_client_ip(request)#جلب الأيبي بسطر واحد
- 1 جواب
-
- 1
-
نعم توجد حزمة مشهورة تدعى django-hosts ، يمكتك من خلالها عمل host routing بطريقة سهلة وسلسة وذلك بعدة خطوات : تحميل الحزمة من خلال مدير الحزم pip pip install django-hosts بعد ذلك يجب إضافة 'django_hosts' إلى إعدادات INSTALLED_APPS ضبط إعدادات MIDELLWARE MIDDLEWARE = [ ' django_hosts.middleware.HostsRequestMiddleware',#في أول الإعدادات #... other middleware 'django_hosts.middleware.HostsResponseMiddleware',# في أخر الإعدادات ] إضافة module إسمه hosts.py بجانب ملف settings from django.conf import settings from django_hosts import patterns, host host_patterns = patterns('', host(r'www', settings.ROOT_URLCONF, name='www'), host(r'(\w+)', 'path.to.custom_urls', name='wildcard'),# ضبط المسار حسب اسم مشروعك ) ملف hosts.py يعمل مثل urls.py فقط يدير إعدادات dns ، هنا ، سيتم توجيه الطلبات إلى www.example.com كالمعتاد ولكن يتم توجيه طلب "admin.example.com " إلى path.to.custom_urls . في templates ، يمكنك استخدام علامة نموذج host_url () لعكس عنوان URL بالطريقة التي اعتدت عليها مع علامة قالب عنوان URL لـ Django: <a href="{% url 'homepage' %}">الرئيسية</a> | <a href="{% url 'account' host 'wildcard' request.user.username %}">حسابي</a> |
- 2 اجابة
-
- 1
-
4 طرق بسيطة لمنع تنزيل الفيديو من المؤكد أن منع تنزيل الفيديو هو مصدر قلق كبير لمنصات الفيديو. هذه الطرق مختلفة يمكنك من خلالها منع تنزيل الفيديو: تشفير مقاطع الفيديو الخاصة بك لمنع تنزيلها استخدام العلامة المائية على مقاطع الفيديو استخدام تقنية تشفير DRM لحماية ملفات الفيديو اختيار خدمة DRM كيف تمنع تنزيل الفيديو في ووردبريس؟ في Vdocipher توفر استضافة فيديو آمنة لـ WordPress من خلال تقديم الميزات التالية لهم. دفق مشفر بنظام إدارة الحقوق الرقمية (DRM) البرنامج المساعد WordPress لسهولة التكامل مشغل HTML5 مخصص لبرنامج WordPress علامة مائية ديناميكية خادم AWS و CDN
-
في مجلد التطبيق الخاص بك ، تقوم بإنشاء ملف serializer.py. from rest_framework import serializers from .models import Profile,Hobby # ننشأ السيريالايز الخاص بهاذ المودل class HobbySerializer(serializers.ModelSerializer): class Meta: model = Hobby fields = '__all__' class ProfileSerializer(serializers.ModelSerializer): user_hobby = HobbySerializer(many=True) """هل لاحظت أنني أتصل بفئة HobbySerializer الخاصة بي في ProfileSerializer. وهذا ما يسمى تداخل المتسلسلات. للتعامل مع طريقة POST ، سأتجاوز طريقة الإنشاء التي أحفظ بها بيانات الملف الشخصي ثم أحفظ هواية الشخص الذي تم إنشاء ملفه الشخصي. الآن دعنا ندعو ProfileSerializer لدينا في العرض.""" class Meta: model = Profile fields = '__all__' def create(self, validated_data): user_hobby = validated_data.pop('user_hobby') profile_instance = Profile.objects.create(**validated_data) for hobby in user_hobby: Hobby.objects.create(user=profile_instance,**hobby) return profile_instance ثم في ملف views : from rest_framework import viewsets from .models import Profile from .serializers import ProfileSerializer # في هاذ الكلاس نقوم بالتحكم في عرض البيانات class ProfileViewset(viewsets.ModelViewSet): #البيانات المراد عرضها queryset = Profile.objects.all() # شكل البيانات serializer_class = ProfileSerializer # http طرق استعلام http_method_names = ['get','post','retrieve','put','patch']
- 1 جواب
-
- 1
-
يحدث "TypeError: expected string or bytes-like object" في Python عندما نمرر وسيطة من نوع مختلف إلى دالة تتوقع وسيطة (argument) string ، على سبيل المثال re.sub (). لحل الخطأ ، تأكد من تمرير وسيطة string إلى الدالة. def __str__(self): return '%s' %(self.user.username)# --> replace with str(self.user.username) وأنصحك باستعمال PostgreSQL مع django لأنه مدعوم بشكل كبير عكس MySql الذي استغنى عنه django منذ وقت
-
لا يوجد خطأ في الكود الذي أرفقتيه , لذالك الخطأ على الأرجح قد يكون في ملف sqlite , احذف مجلد migrations وملف sqlite ثم بعد ذلك طبق التعليمات التالية python manage.py makemigrations ثم python manage.py migrate
- 5 اجابة
-
- 1