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

السؤال

Recommended Posts

  • 1
نشر

نعم توجد حزمة مشهورة تدعى django-hosts ، يمكتك من خلالها عمل host routing بطريقة سهلة وسلسة وذلك بعدة خطوات :

  1. تحميل الحزمة من خلال مدير الحزم pip 
    pip install django-hosts
    

     

  2. بعد ذلك يجب إضافة 'django_hosts' إلى إعدادات INSTALLED_APPS 

  3. ضبط إعدادات MIDELLWARE 

    MIDDLEWARE = [
       ' django_hosts.middleware.HostsRequestMiddleware',#في أول الإعدادات
    #... other middleware
       'django_hosts.middleware.HostsResponseMiddleware',# في أخر الإعدادات
        
     
    
    ]

     

  4. إضافة 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 . 

  5. في templates ، يمكنك استخدام علامة نموذج host_url () لعكس عنوان URL بالطريقة التي اعتدت عليها مع علامة قالب عنوان URL لـ Django:

    <a href="{% url 'homepage' %}">الرئيسية</a> |
    <a href="{% url 'account' host 'wildcard' request.user.username %}">حسابي</a> |

     

  • 0
نشر

توجد الحزمة django-subdomains، حيث يمكنها القيام بما تريد.

لتنزيل هذه الحزمة نقوم بتنفيذ التعليمة:

pip install django-subdomains

لجعل هذه المكتبة تعمل يجب ضبط بعض الإعدادات كما يلي:

  1. إضافة الطبقة الوسطية middleware الخاصة بهذه المكتبة ضمن الملف settings في القائمة الخاصة بالطبقات الوسطية، و ذلك بالاسم التالي: subdomains.middleware.SubdomainURLRoutingMiddleware و يجب أن تأتي هذه الطبقة قبل طبقة ال CommonMiddleware في حال وجدت.
  2. ضبط إعدادات SUBDOMAIN_URLCONFS في ملف ال settings.
  3. التأكد من أن SITE_ID قد تم تعريفه و أن الخاصية Site.domain لذلك الموقع تتعلق باسم الدومين الذي سيقوم المستخدمون بالوصول للموقع من خلاله.
  4. إذا أردت استعمال ذلك في ال template مع التاغ {% url %} فيجب وضع subdomains في قائمة التطبيقات في ال settings.

مثال على إعدادات لذلك:

ROOT_URLCONF = 'myproject.urls.account'
# في هذا القاموس إن المفتاح يمثل الدومين الفرعي
SUBDOMAIN_URLCONFS = {
    None: 'myproject.urls.frontend',  # هنا لا يوجد دومين فرعي
    'www': 'myproject.urls.frontend',
    'api': 'myproject.urls.api',
}

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...