سؤال

أقوم بإنشاء تطبيق باستخدام Web2Py Framework ... لا أريد أن أضطر إلى استخدام كائن الطلب للحصول على جميع معلمات QueryString ، بدلاً من ذلك ، أود إنشاء وحدة التحكم الخاصة بي مع معلمات مسماة وأجعل جهاز التوجيه يفصل عن Querystring (أو نموذج البيانات) قاموس في المعلمات المسماة واتصل وحدة التحكم الخاصة بي.

لذا بدلاً من طريقة وحدة التحكم

create_user():

حيث يمكنني استخدام كائن الطلب العالمي () وألقي نظرة على قائمة VARS ... أفضل بدلاً من ذلك

create_user(first_name, last_name, email):

كما أرى في منصات MVC الأخرى.

هل هذا ممكن في web2py بالفعل؟ أم أن هناك مكونًا إضافيًا له؟ أو هل أحتاج إلى إضافة ذلك بنفسي؟

هل كانت مفيدة؟

المحلول

رقم كما هو مذكور في الكتاب, ، عنوان URL للنموذج

http://127.0.0.1:8000/a/c/f.html/x/y/z?p=1&q=2

خرائط للتطبيق (مجلد) a, ، وحدة تحكم (ملف) c.py, ، وظيفة f, ، ويجب تفريغ الوسيطات الإضافية من كائن الطلب كـ

x, y, z = tuple(request.args)
p = request.vars['p'] # p=1
q = request.vars['q'] # q=2 

علاوة على ذلك ، يكتشف Web2Py على وجه التحديد وظائف وحدة التحكم الصالحة مثل تلك الوظائف التي ليس لها وسيطات. AFAICR ، وهذا هو عكس Django الذي يكتشف وظائف وحدة التحكم الصالحة كتلك التي لديها حجة واحدة على الأقل.

نصائح أخرى

أفعل

def create_user():
    try:
        first_name, last_name, email = request.args[:3]
    except:
        redirect('some_error_page')

ولكن ضع في اعتبارك أن First_Name و Last_Name والبريد الإلكتروني قد يحتوي على chars غير مسموح بها في path_info (web2py في إرضاء عند التحقق من صحة ذلك فقط [ w -.].

هناك ظرف يمكن لـ Web2Py وحدات التحكم في استخدام المعلمات. عندما تحتوي وظيفة وحدة التحكم على ديكور الخدمات ، يمكن استخدام المعلمات ، اعتمادًا على نوع الخدمة ، على سبيل المثال:

@service.jsonrpc
def somefunction(a=None, b='default'):
    ## whatever

هذا النهج هو عندما تكون وظيفة وحدة التحكم هي في الحقيقة واجهة برمجة تطبيقات ، وليس وسيلة لإنشاء عرض ويب. هناك أشياء لطيفة يمكنك القيام بها من حيث تحديد وظائف عرض الويب و API على طراز API بالتوازي ، واتصال طرق العرض على الويب بوظائف API ، لضمان انفصال جيد عن طرق العرض وأجهزة التحكم.

اعتمادًا على كيفية اختيار تقسيم المسؤوليات بين عميل الويب / JavaScript ، وعرض Web2Py ، ووحدة تحكم Web2Py ، يمكن أن يكون من المنطقي أن يكون لديك وظائف تحكم هي واجهات برمجة التطبيقات (مع معلمات اختيارية) بدلاً من إنشاء منطق التغلب على المعلمة في وحدة تحكم نمط ويب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top