سؤال

some_view?param1=10&param2=20

def some_view(request, param1, param2):

هل هذا ممكن في Django؟

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

المحلول

يمكنك دائما كتابة ديكور. على سبيل المثال شيء من هذا القبيل (غير مختبر):

def map_params(func):
    def decorated(request):
        return func(request, **request.GET)
    return decorated

@map_params
def some_view(request, param1, param2):
    ...

نصائح أخرى

لست متأكدا من أنه من الممكن الحصول عليها لتمريرها الحجج لوظيفة الرؤية، ولكن لماذا لا تستطيع الوصول إلى GET المتغيرات من request.GETب بالنظر إلى أن URL، سيكون Django request.GET['param1'] يكون 10 و request.GET['param2'] يكون 20. خلاف ذلك، يجب أن توصلت إلى نوع من التعبير المنتظم الغريب لمحاولة القيام بما تريد.

وأنا أتفق مع باولو ... الأشياء بعد "؟" تحصل على المعلمات وربما يجب أن تعامل على هذا النحو. ومع ذلك، إذا كنت ترغب حقا في الحفاظ على تعريف بعض الشيء () كما ذكرت في السؤال، فيمكنك فعل شيء مثل:

from django.http import Http404
def some_view_proxy(request):
     if 'param1' in request.GET and 'param2' in request.GET:
         return some_view(request, request.GET['param1'],
                          request.GET['param2'])
     raise Http404

أو يمكنك فقط تحديد some_view () مثل هذا واستخدام معارقة الحصول عليها. مجرد فضول، لماذا تريد ذلك؟

بدلا من القتال Django، لماذا لا تطلب فقط بعض Some_View / 10/20 ثم قم بإعداد URLS.py لاستخراج الوسائط؟

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