جانغو:كيف يمكنني إنشاء url عام التوجيه إلى وجهات النظر ؟

StackOverflow https://stackoverflow.com/questions/168113

  •  03-07-2019
  •  | 
  •  

سؤال

لدي جميلة القياسية التطبيق جانغو, وأنا أتساءل كيف يمكن تعيين url التوجيه بحيث لا صراحة خريطة كل عنوان url إلى الرأي.

على سبيل المثال, لنفترض أن لدي وجهات النظر التالية: Project, Links, Profile, Contact.أنا أفضل أن لا يكون لي urlpatterns تبدو مثل هذا:

(r'^Project/$', 'mysite.app.views.project'),
(r'^Links/$', 'mysite.app.views.links'),
(r'^Profile/$', 'mysite.app.views.profile'),
(r'^Contact/$', 'mysite.app.views.contact'),

وهلم جرا.في أبراج, سيكون بسيطة مثل:

map.connect(':controller/:action/:id')

وأنها سوف تلقائيا انتزاع حق تحكم وظيفة.هل هناك شيء مماثل في جانغو?

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

المحلول

mods = ('Project','Links','Profile','Contact')

urlpatterns = patterns('',
   *(('^%s/$'%n, 'mysite.app.views.%s'%n.lower()) for n in mods)
)

نصائح أخرى

واذا لم يكن هناك حقا <م> ضخمة عدد من وجهات النظر، والكتابة عنهم صراحة ليست سيئة للغاية، من منظور النمط.

ويمكنك تقصير المثال الخاص بك، على الرغم من باستخدام حجة البادئة وظيفة patterns:

urlpatterns = patterns('mysite.app.views',
    (r'^Project/$', 'project'),
    (r'^Links/$', 'links'),
    (r'^Profile/$', 'profile'),
    (r'^Contact/$', 'contact'),
)

كنت قد تكون قادرة على استخدام خاص عرض وظيفة على طول هذه الخطوط:

def router(request, function, module):
    m =__import__(module, globals(), locals(), [function.lower()])
    try:
        return m.__dict__[function.lower()](request)
    except KeyError:
        raise Http404()

ثم urlconf مثل هذا:

(r'^(?P<function>.+)/$', router, {"module": 'mysite.app.views'}),

هذا الرمز هو غير مجربة ولكن الفكرة العامة يجب أن تعمل ، على الرغم من أنك يجب أن تذكر:

صراحة أفضل من ضمنيا.

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