2012-04-07 50 views
22

Tôi muốn tạo trang tùy chỉnh cho bảng quản trị không có mô hình. Đối với lần đầu tiên tôi copy index.html để dự án thư mục:Làm cách nào để tạo trang tùy chỉnh cho quản trị django?

mysite/ 
    templates/ 
     admin/ 
      index.html 

Sau đó thêm vào các ứng dụng chặn mã của tôi:

<div class="module"> 
    <table summary="{% blocktrans with name="preferences" %}Models available in the preferences application.{% endblocktrans %}"> 
     <caption><a href="preferences" class="section">{% blocktrans with name="preferences" %}Preferences{% endblocktrans %}</a></caption> 
      <tr> 
       <th scope="row"><a href="preferences">Preferences</a></th> 
       <td><a href="preferences" class="changelink">{% trans 'Change' %}</a></td> 
      </tr> 
    </table> 
</div> 

này hoạt động tốt, sau đó tôi có thể tạo trang/templates/admin/preferences/preferences mới .html và add để urls.py:

url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')), 

và thêm mã để preferences.html:

{% extends "admin/base_site.html" %} 
{% block title %}Test page{% endblock %} 

Chạy và xem thông báo có lỗi "Trang quản trị được yêu cầu không tồn tại". Tôi đã làm gì sai?

+0

Bạn đã thêm URL vào url nào? Nó có thể là một regex chung hơn trong admin của Django là chụp '/ admin/preferences' để nó không bao giờ đạt đến regex URL của bạn. –

+0

Tôi chỉ có một urls.py tại /mysite/mysite/urls.py, tôi nghĩ rằng đây không phải là lỗi trong url vì tôi không gặp lỗi với các mẫu url. – Gr1N

+0

Bạn sẽ không nhận được thông báo lỗi nếu đúng như vậy. Bạn đã thử thay đổi URL thành một thứ khác để xem liệu bạn có nhận được trang quản trị trong trường hợp đó không? Ví dụ: '^ testadmin/preferences/$'? –

Trả lời

21

Bạn cần phải thêm URL admin của bạn trước mẫu URL của người quản trị bản thân:

urlpatterns = patterns('', 
    url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')), 
    url(r'^admin/', include('django.contrib.admin.urls')), 
) 

Bằng cách này, URL sẽ không được xử lý bởi admin của Django.

+2

Trang này có được bảo vệ hoặc mở cho công chúng không? –

12

Bạn nên sử dụng số get_urls của quản trị viên.

+3

'get_urls' là một phương thức' ModelAdmin' mà lần lượt cần một 'Mô hình' nhưng OP đặc biệt muốn" tạo trang tùy chỉnh cho bảng quản trị ** mà không có mô hình ** ". (Nhấn mạnh thêm.) – Louis

5

Dưới đây là một ví dụ về tất cả những gì cần là cần thiết (như của Django 1.6) cho một trang tùy chỉnh quản trị được liên kết đến từ một nút bên cạnh nút "History" ở phía trên bên phải của trang chi tiết của đối tượng:

https://gist.github.com/mattlong/4b64212e096766e058b7

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