2012-07-02 29 views
6

मैं django 1.4 और पायथन 2.7 का उपयोग कर रहा हूं।ऐप्स से स्वतंत्र django व्यवस्थापक पर नया यूआरएल

मुझे बस एक साधारण आवश्यकता है जहां मुझे django व्यवस्थापक एप में एक नया यूआरएल जोड़ना है। मुझे पता है कि कस्टम ऐप्स के लिए यूआरएल कैसे जोड़ना है, लेकिन यह पता लगाने में असमर्थ है कि व्यवस्थापक ऐप के यूआरएल कैसे जोड़े जाए। कृपया मुझे इसके माध्यम से मार्गदर्शन करें।

असल में पूरा यूआरएल admin/my_url जैसा होना चाहिए।

अद्यतन

मैं एक तरह से जिसके बाद मैं भी यूआरएल व्यवस्थापक का उपयोग कर नक्शा पलट सकता है चाहता हूँ।

उत्तर

5

+1 आपके मूल प्रश्न के जिंगो के उत्तर के लिए +1। उत्तर में उत्तर देने के लिए आपकी स्पष्ट टिप्पणी के साथ: ऐसा यूआरएल "ऐप्स से स्वतंत्र" नहीं है, यह ऐप "व्यवस्थापक" के लिए एक यूआरएल है। https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-admin-sites

संपादित करें:

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.AdminSite

डिफ़ॉल्ट रूप से, एक व्यवस्थापक साइट है "" व्यवस्थापक

व्यवस्थापक साइट के लिए एक URL जोड़ने get_urls() अधिभावी द्वारा, ModelAdmin के समान है साइट को "django.contrib.admin.site" के रूप में तत्काल किया गया है (और फिर उदाहरण के लिए आपका मॉडलएडमिन पंजीकृत है)। तो आप अपने खुद के MyAdminSite के लिए AdminSite उपवर्ग कर सकते हैं और get_urls (फिर से परिभाषित) वहाँ:

from django.contrib.admin import AdminSite 

class MyAdminSite(AdminSite): 
    def get_urls(): 
     ... 


... 
my_admin_site = MyAdminSite() 
... 
my_admin_site.register(MyModel, MyModelAdmin) 

सुनिश्चित करें कि आप के बजाय अब urls.py में my_admin_site का उपयोग करें: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#hooking-adminsite-instances-into-your-urlconf

get_urls की वास्तविक सामग्री के बारे में (), https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls (निश्चित रूप से MyAdminSite के सुपर() को कॉल करना) देखें। वहां उल्लेख किए गए सुविधाजनक "admin_view" wrapper को भी ध्यान दें।

पीएस: सिद्धांत रूप में, आप get_urls() को भी परिभाषित कर सकते हैं और फिर डिफ़ॉल्ट व्यवस्थापक साइट को बंद कर सकते हैं ताकि यह आपके get_urls() का उपयोग कर सके लेकिन मुझे नहीं पता कि यह वास्तव में काम करेगा या नहीं - आपको शायद अपने "पहले" आयात के बाद बंदरपैच सही ...

+0

मुझे शब्दों के गलत उपयोग के लिए खेद है। मैं वास्तव में यह चाहता था। लेकिन, क्या आप कृपया यह बताने के लिए क्या कदम उठा सकते हैं? या एक उदाहरण जहां यह किया गया है? –

1

बस अपनी रूट urls.py में व्यवस्थापक मैपिंग से पहले अपना वांछित यूआरएल मैपिंग डालें। अनुरोध के लिए पहला मैच लिया जाएगा, क्योंकि डीजेंगो यूआरएल मैपिंग को ऊपर से नीचे चला जाता है। बस याद रखें कि आप सामान्य रूप से आवश्यक यूआरएल का उपयोग नहीं करते हैं क्योंकि यह सामान्य रूप से कस्टम मैपिंग के साथ मेल नहीं खाता है। HTH!

+0

यह एक संभावित समाधान है। लेकिन, यह यूआरएल को एक व्यवस्थापक यूआरएल के रूप में पंजीकृत नहीं करता है (जैसे मॉडल यूआरएल के मामले में)। यह मेरी साइट का एक और यूआरएल है जिसे मैं डीजेगो के अपने यूआरएल से पहले परिभाषित करता हूं और इसकी सेवा करता हूं। मैं एक तरीका चाहता हूं जिसके बाद मैं व्यवस्थापक का उपयोग कर यूआरएल को उलटा कर सकता हूं। –