2013-03-08 7 views
1

我會覆蓋默認的AdminSite類,如手冊中所述,儘管它太純粹,關於此部分的信息在那裏。
GS/admin.py文件:覆蓋AdminSite以附加自定義網址

from django.contrib.admin import AdminSite 
from django.conf.urls import patterns, url 
from gs.views import * 

class AdminSiteGs(AdminSite): 

    def get_urls(self): 
     urls = super(AdminSiteGs, self).get_urls() 

     urls += patterns('', 
      url(r'^my_admin_view/$', self.admin_view(my_admin_view)) 
     ) 

     return urls 

admin_site_gs = AdminSiteGs() 

GS這是我的應用程序和項目名稱。

GS/urls.py文件

from django.conf.urls import patterns, include, url 
from page import views 
from gs.admin import admin_site_gs 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin_site_gs.urls)), 
) 

,我有一個名爲頁的申請書,在這裏我把admin.py文件:

from gs.admin import admin_site_gs 
from page.models import Page, Menu 
from django.contrib import admin 

class PageAdmin(admin.ModelAdmin): 
    list_display = ('name', 'url', 'page_type') 

class MenuAdmin(admin.ModelAdmin): 
    list_display = ('name', 'code') 

admin_site_gs.register(Page, PageAdmin) 
admin_site_gs.register(Menu, MenuAdmin) 

所以沒有什麼這裏是工作=(/admin/my_admin查看(它返回404),也不是主管理頁面/admin。我沒有看到我在頁面/ admin.py文件中註冊的模型。

這聽起來很有趣,但我嘗試了所有在3-4小時內工作的員工=))正如你可能猜測我在Django和Python中都是新手......現在我想知道的是如何追加自定義網址和視圖到我的覆蓋類AdminSite?

我刪除autodiscover方法,所以現在看來​​Django沒有看到任何關於文件page/admin.py

但第一個問題是比較有意思的,爲什麼我對試圖訪問/管理/ my_admin可以頁404錯誤...

PS爲什麼我在開始的問候已經拼切O_O

回答

4

根據該文檔,可以定義自定義管理視圖中的任何URL模式必須之前發生的管理模式:https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls

嘗試:

def get_urls(self): 
    urls = super(AdminSiteGs, self).get_urls() 

    my_urls = patterns('', 
     url(r'^my_admin_view/$', self.admin_view(my_admin_view)) 
    ) 

    return my_urls + urls 

你不應該需要包括這些模式是這樣的:

urlpatterns = patterns('', 
    url(r'^admin/', include(admin_site_gs.urls)), # not needed 
) 
+0

謝謝!更改訂單網址已被粘貼解決問題!但是,你能告訴我你的意思是什麼模式是不需要的?如果我註釋掉admin_site_gs.urls Django是如何知道我的網址被放置的? – 2013-03-08 14:36:57

+0

通過重寫'get_urls()',Django動態地爲你添加模式。由於它們都以'/ admin'開始,因此您不必將它們手動包含在您的基本urls.py中 – Brandon 2013-03-08 16:45:04