2012-07-02 21 views
6

Tôi đang sử dụng django 1.4 và Python 2.7.URL mới trên quản trị django độc lập với các ứng dụng

Tôi chỉ có một yêu cầu đơn giản khi tôi phải thêm URL mới vào ứng dụng quản trị django. Tôi biết cách thêm URL dành cho ứng dụng tùy chỉnh nhưng tôi không thể tìm ra cách thêm URL là ứng dụng quản trị. Xin hãy hướng dẫn tôi qua điều này.

Về cơ bản, URL đầy đủ phải giống như admin/my_url.

CẬP NHẬT

Tôi muốn có một cách sau đó tôi cũng có thể đảo ngược bản đồ URL sử dụng admin.

Trả lời

5

+1 cho câu trả lời của Jingo cho câu hỏi ban đầu của bạn. Với nhận xét rõ ràng của bạn về câu trả lời: URL như vậy là không phải là "độc lập với ứng dụng", đó là URL dành cho ứng dụng "quản trị".

Thêm một URL đến site admin cũng tương tự như ModelAdmin, bằng cách ghi đè get_urls(): https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-admin-sites

EDIT:

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

là một trang web admin, theo mặc định "các" admin trang web được instantiated là "django.contrib.admin.site" (và sau đó ví dụ như ModelAdmin của bạn được đăng ký chống lại điều đó). Vì vậy, bạn có thể phân lớp AdminSite cho MyAdminSite của riêng bạn và tái xác định get_urls() có:

from django.contrib.admin import AdminSite 

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


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

Hãy chắc chắn rằng bạn sử dụng my_admin_site trong urls.py thay vì bây giờ: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#hooking-adminsite-instances-into-your-urlconf

Về nội dung thực tế của get_urls (), xem https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls (tất nhiên gọi là siêu() của MyAdminSite). Cũng lưu ý trình bao tiện ích "admin_view" được đề cập ở đó.

PS: Về lý thuyết, bạn cũng có thể chỉ định get_urls() và sau đó monkeypatch trang quản trị mặc định để sử dụng get_urls() nhưng tôi không biết điều đó có thực sự hoạt động hay không - bạn có thể phải monkeypatch ngay sau khi nhập "đầu tiên" của nó ...

+0

Tôi xin lỗi vì đã sử dụng sai từ. Tôi thực sự muốn điều này. Nhưng, bạn có thể xin tóm tắt về những bước có liên quan để làm điều này? Hoặc một ví dụ mà điều này đã được thực hiện? –

1

Chỉ cần đặt ánh xạ url mong muốn của bạn trước khi ánh xạ quản trị trong url gốc của bạn. Trận đấu đầu tiên cho yêu cầu sẽ được thực hiện, bởi vì django đi ánh xạ url từ trên xuống dưới. Chỉ cần nhớ rằng bạn không sử dụng url mà quản trị viên thường cần hoặc cung cấp vì điều này sẽ không bao giờ khớp với bản đồ tùy chỉnh ở phía trước nó. HTH!

+0

Đó là một giải pháp khả thi. Tuy nhiên, nó không đăng ký URL dưới dạng URL quản trị (giống như trong trường hợp URL của mô hình). Đây là một URL khác của trang web của tôi mà tôi xác định và phân phối nó trước URL của Django. Tôi muốn một cách mà sau đó tôi cũng có thể đảo ngược bản đồ URL bằng cách sử dụng admin. –

Các vấn đề liên quan