Assembla home | Assembla project page
 

Changeset 50

Show
Ignore:
Timestamp:
04/26/08 12:01:17 (6 months ago)
Author:
sacre
Message:

- poprawki literówek
- poprawki wyglądu (nagłówki oraz kod)
- poprawki linków do djangoproject
- inne drobne

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django-docs/tutorial02.txt

    r47 r50  
    33=========================================== 
    44Tłumaczenie: Marcin Sztolcman <marcin {} urzenia // net> 
     5 
    56Poprawki: Maciej Litwiniuk <maciej // litwiniuk {} galdomedia // pl> 
    67 
     
    1314 
    1415.. admonition:: Założenia 
    15          
     16 
    1617    Generowanie panelu administracyjnego dla klientów aby mogli dodawać, edytować i 
    1718    usuwać treść jest żmudną pracą która nie wymaga zbyt dużej kreatywności. Z tego 
    18     właśnie powodu Django stara się zautomatyzować tworzenie interfejsu  
     19    właśnie powodu Django stara się zautomatyzować tworzenie interfejsu 
    1920    administracyjnego. 
    2021 
    21     Django był pisany w środowisku publicystów, gdzie bardzo ważnym było oddzielenie  
    22     części zarządzającej stroną od publicznej. Osoby zarządzające stroną używają  
    23     systemu aby dodawać nowe historie, wydarzenia, punktacje sportowe etc, a treść  
    24     ta była prezentowana czytelnikom. Django rozwiązuje problemy z związane  
     22    Django był pisany w środowisku publicystów, gdzie bardzo ważnym było oddzielenie 
     23    części zarządzającej stroną od publicznej. Osoby zarządzające stroną używają 
     24    systemu aby dodawać nowe historie, wydarzenia, punktacje sportowe etc, a treść 
     25    ta była prezentowana czytelnikom. Django rozwiązuje problemy z związane 
    2526    tworzeniem uniwersalnych paneli administracyjnych na potrzeby edycji treści. 
    2627 
    27     Panel administracyjny nie jest przeznaczony do użytku przez osoby odwiedzające  
     28    Panel administracyjny nie jest przeznaczony do użytku przez osoby odwiedzające 
    2829    naszą stronę - jest dla osób zarządzających tą stroną. 
    2930 
     
    3233 
    3334Część administracyjna Django jest domyślnie wyłączona - można ją opcjonalnie włączyć. 
    34 Aby aktywować intrfejs administracyjny dla swojej instalacji, trzeba wykonać trzy  
     35Aby aktywować interfejs administracyjny dla swojej instalacji, trzeba wykonać trzy 
    3536kroki: 
    3637 
     
    3940      ``INSTALLED_APPS``, tabele w bazie danych muszą zostać uaktualnione. 
    4041    * Popraw swój plik ``mysite/urls.py`` oraz odkomentuj linię znajdującą się pod 
    41       "Uncomment this for admin:". Ten plik jest plikiem konfiguracyjnym dla URLi  
    42       Twojej strony - będziemy zgłębiać jego tajniki w następnej części tutoriala.  
     42      "Uncomment this for admin:". Ten plik jest plikiem konfiguracyjnym dla URLi 
     43      Twojej strony - będziemy zgłębiać jego tajniki w następnej części tutoriala. 
    4344      Na tą chwilę wystarczy Ci wiedzieć, że rzutuje on adresy URL na Twoją aplikację. 
    4445 
     
    4849Uruchommy serwer deweloperski i przyjrzyjmy się stronie administracyjnej. 
    4950 
    50 Przypomnij sobie z części pierszej, że serwer deweloperski uruchamiałeś poleceniem
     51Przypomnij sobie z części pierwszej, że serwer deweloperski uruchamiałeś poleceniem:
    5152 
    5253    python manage.py runserver 
    5354 
    54 Teraz otwóz przeglądarkę internetową i przejdź do "/admin/" w swojej lokalnej  
     55Teraz otwórz przeglądarkę internetową i przejdź do "/admin/" w swojej lokalnej 
    5556domenie -- np. http://127.0.0.1:8000/admin/. Powinienneś zoaczyć ekran logowania 
    5657do aplikacji administracyjnej. 
     
    6970   :target: http://media.djangoproject.com/img/doc/tutorial-trunk/admin02.png 
    7071 
    71 Powinienneś zobaczyć również kilk innycg typów edytowalnych treści, w tym grupy, 
    72 użytkowników oraz strony. To jest podstawowa funkcjonalność, którą Django  
     72Powinieneś zobaczyć również kilka innych typów edytowalnych treści, w tym grupy, 
     73użytkowników oraz strony. To jest podstawowa funkcjonalność, którą Django 
    7374dostarczana domyślnie. 
    7475 
     
    8081Ale gdzie jest nasza sonda? Nie ma jej przecież w panelu administracyjnym. 
    8182 
    82 Trzeba zrobić jedną rzecz: "poinformować"’" Django że nasz model ``polls.Poll`` 
    83 powinien posiadać interfejs do zarządzania nim. Wyedytuj plik  
    84 ``mysite/polls/models.py`` i dodaj tam klasę wewnętrzą ``Admin``:: 
     83Trzeba zrobić jedną rzecz: "poinformować" Django że nasz model ``polls.Poll`` 
     84powinien posiadać interfejs do zarządzania nim. Wyedytuj plik 
     85``mysite/polls/models.py`` i dodaj tam klasę wewnętrzną ``Admin``:: 
    8586 
    8687    class Poll(models.Model): 
     
    9091 
    9192Sekcja ``class Admin`` będzie zawierać wszystkie ustawienia związane ze sposobem 
    92 w jaki ten model będzie prezetowany w panelu admina. Wszystkie ustawienia są  
     93w jaki ten model będzie prezentowany w panelu admina. Wszystkie ustawienia są 
    9394opcjonalne, jednak dodanie pustej klasy oznacza "dodaj ten obiekt do panelu 
    94 administracyjnego z użyciem domyślnych opcji" 
     95administracyjnego z użyciem domyślnych opcji". 
    9596 
    9697Teraz odśwież stronę panelu, by zobaczyć zmiany. Zauważ, że nie musiałeś 
    97 ponownie uruchamiaś serwera deweloperskiego -- serwer automatycznie przeładuje 
     98ponownie uruchomić serwera deweloperskiego -- serwer automatycznie przeładuje 
    9899projekt, więc wszelkie zmiany będą od razu widoczne w twej przeglądarce. 
    99100 
     
    101102============================== 
    102103 
    103 Teraz, gdy model ``Poll`` posiada wewnętrzną klasę ``Admin``, Django wie, że ma  
     104Teraz, gdy model ``Poll`` posiada wewnętrzną klasę ``Admin``, Django wie, że ma 
    104105wyświetlić go w panelu: 
    105106 
     
    108109   :target: http://media.djangoproject.com/img/doc/tutorial-trunk/admin03.png 
    109110 
    110 Kliknij "Polls". Jesteś teraz na wykazie wszystkich sond. Ta strona pokazuje  
     111Kliknij "Polls". Jesteś teraz na wykazie wszystkich sond. Ta strona pokazuje 
    111112wszystkie sondy znajdujące się w bazie danych i pozwala wybrać jedną z nich do 
    112 edycji. Teraz znajduje się tam tylko “What’s up?” - czyli sonda którą utworzyliśmy 
     113edycji. Teraz znajduje się tam tylko "What’s up?" - czyli sonda którą utworzyliśmy 
    113114w pierwszej części tutoriala: 
    114115 
     
    125126Rzeczy które warto zauważyć: 
    126127 
    127 * Formularz został wygenerowany automatycznie na podstawie informacji z modelu  
     128* Formularz został wygenerowany automatycznie na podstawie informacji z modelu 
    128129  sondy 
    129 * różnym rodzajom pól modelu (model.DateTimeField, model.CharField) odpowiadają  
    130   różne kontrolki HTML. Każdy typ pola wie jak ma zostać wywietlony w panelu  
     130* różnym rodzajom pól modelu (model.DateTimeField, model.CharField) odpowiadają 
     131  różne kontrolki HTML. Każdy typ pola wie jak ma zostać wyświetlony w panelu 
    131132  administracyjnym 
    132 * do każdego pola ``DateTimeField`` dodawane są dodatkowe przyciski. Dla daty  
    133   jest to "Today" ("Dzisiaj") wraz z przyciskiem wyświetlającym okienko z mini  
    134   kalendarzem, natomiast dla pola "Time" ("Czas") są przypisane przyciski  
     133* do każdego pola ``DateTimeField`` dodawane są dodatkowe przyciski. Dla daty 
     134  jest to "Today" ("Dzisiaj") wraz z przyciskiem wyświetlającym okienko z mini 
     135  kalendarzem, natomiast dla pola "Time" ("Czas") są przypisane przyciski 
    135136  "Now" ("Teraz") oraz drugi, służący do pokazania okienka z listą najczęściej 
    136137  używanych określeń czasu. 
     
    139140 
    140141* Save (Zapisz) -- zapisuje zmiany i wraca do listy obiektów danego rodzaju. 
    141 * Save and continue editing (Zapisz i kontynuuj edycję) -- zapisuje zmiany i  
     142* Save and continue editing (Zapisz i kontynuuj edycję) -- zapisuje zmiany i 
    142143  przeładowuje stronę dla tego obiektu 
    143 * Save and add another (Zapisz i dodaj nowe) -- zapisuje zmiany i przenosi do  
     144* Save and add another (Zapisz i dodaj nowe) -- zapisuje zmiany i przenosi do 
    144145  nowego, pustego formularza odpowiedniego dla danego rodzaju obiektu. 
    145146* Delete (Usuń) -- wyświetla ekran potwierdzający usunięcie obiektu. 
    146147 
    147 Zmień datę publikacji ("Date published") sondy poprzez kliknięcie skrótów  
    148 "Today" ("Dzisiaj") i "Now" ("Teraz"). Następnie kliknij "Save and continue  
     148Zmień datę publikacji ("Date published") sondy poprzez kliknięcie skrótów 
     149"Today" ("Dzisiaj") i "Now" ("Teraz"). Następnie kliknij "Save and continue 
    149150editing" ("Zapisz i kontynuuj edycję"). Teraz wybierz "History" ("Historia") 
    150151w prawym górnym rogu strony. Zobaczysz listę zmian dla tego obiektu dokonanych 
    151 w panelu administracyjnym Django, wraz z datą i godziną zmiany oraz loginem  
     152w panelu administracyjnym Django, wraz z datą i godziną zmiany oraz loginem 
    152153osoby dokonującej tą zmianę: 
    153154 
     
    161162Poświęć kilka minut na podziwianie kodu, którego wcale nnie musisz pisać. 
    162163 
    163 Poprawmy go nieco. Możemy zmienić kolejność pól poprzez dodanie parametru  
     164Poprawmy go nieco. Możemy zmienić kolejność pól poprzez dodanie parametru 
    164165``fields`` do klasy ``Admin``:: 
    165166 
     
    178179używalności takiego formularza. 
    179180 
    180 A skoro już mówimy o formularzach z większą ilością pól, możesz chcieć je  
     181A skoro już mówimy o formularzach z większą ilością pól, możesz chcieć je 
    181182podzielić na zestawy:: 
    182183 
     
    216217Jeszcze. 
    217218 
    218 Są 2 sposoby na naprawienie tego problemu. Pierwszym jest dodanie modelowi  
    219 ``Choice`` jego własnej klasy Admin, tak samo jak zrobiliśmy to z modelem  
     219Są 2 sposoby na naprawienie tego problemu. Pierwszym jest dodanie modelowi 
     220``Choice`` jego własnej klasy Admin, tak samo jak zrobiliśmy to z modelem 
    220221``Polls``. Tak by to wyglądało:: 
    221222 
     
    231232   :alt: Strona administracyjna dla odpowiedzi 
    232233 
    233 W powyższym formularzu pole "Poll" jest polem wyboru zawierającym wszystkie  
    234 sondy w bazie. Django wie, że pole ``ForeignKey`` powinno być reprezentowane  
    235 w panelu administracyjnym jako pole ``<select>``. W naszym przypadku tylko  
     234W powyższym formularzu pole "Poll" jest polem wyboru zawierającym wszystkie 
     235sondy w bazie. Django wie, że pole ``ForeignKey`` powinno być reprezentowane 
     236w panelu administracyjnym jako pole ``<select>``. W naszym przypadku tylko 
    236237jedna sonda chwilowo została zapisana. 
    237238 
    238 Zwróć uwagę na odnośnik "Add another" ("Dodaj inną") znajdujący się obok pola  
    239 "Poll". Każdy obiekt powiązany kluczem obcym (ForeignKey) z innym obiektem  
    240 dostaje taki link automatycznie. Jeśli klikniesz "Add another", zobaczysz  
    241 okienko (popup) z formularzem do dodawania sond. Jeśli dodasz nową sondę za  
     239Zwróć uwagę na odnośnik "Add another" ("Dodaj inną") znajdujący się obok pola 
     240"Poll". Każdy obiekt powiązany kluczem obcym (ForeignKey) z innym obiektem 
     241dostaje taki link automatycznie. Jeśli klikniesz "Add another", zobaczysz 
     242okienko (popup) z formularzem do dodawania sond. Jeśli dodasz nową sondę za 
    242243pomocą tego okienka i klikniesz "Save", Django zapisze nową sondę w bazie danych 
    243244oraz uaktualni pole wyboru znajdujące się w formularzu odpowiedzi ("Choice"). 
    244245 
    245 Powyższy sposób nie jest najbardziej efektywną metodą dodawania obiektów  
     246Powyższy sposób nie jest najbardziej efektywną metodą dodawania obiektów 
    246247odpowiedzi do systemu. Byłoby wygodniej, jeśli mógłbyś dodawać odpowiedzi 
    247248do sondy bezpośrednio z formularza w którym tworzysz nową sondę. Skoro tak, 
    248249to spróbujmy to wykonać. 
    249250 
    250 Usuń klasę ``Admin`` z modelu Choice. Następnie zmień pole klucza obcego w  
     251Usuń klasę ``Admin`` z modelu Choice. Następnie zmień pole klucza obcego w 
    251252obiekcie Choice:: 
    252253 
    253254    poll = models.ForeignKey(Poll, edit_inline=models.STACKED, num_in_admin=3) 
    254255 
    255 Powyższa zmiana informuje Django: "Obiekty odpowiedzi są edytowane z poziomu  
     256Powyższa zmiana informuje Django: "Obiekty odpowiedzi są edytowane z poziomu 
    256257formularza sond. Domyślnie dostarcz 3 zestawy pól odpowiedzi." 
    257258 
     
    261262    votes = models.IntegerField(core=True) 
    262263 
    263 To mówi Django: "Kiedy edytujesz odpowiedzi w formularzu edycji sondy, pola  
     264To mówi Django: "Kiedy edytujesz odpowiedzi w formularzu edycji sondy, pola 
    264265‘choice’ i ‘votes’ są wymagane. Wypełnienie któregokolwiek z nich oznacza, 
    265 że ma zostać dodany nowy obiekt odpowiedzi, a wyczyszczenie obydwóch pól  
     266że ma zostać dodany nowy obiekt odpowiedzi, a wyczyszczenie obydwóch pól 
    266267oznacza usunięcie istniejącego obiektu." 
    267268 
     
    279280użyć parametru ``num_extra_on_change=3``. 
    280281 
    281 Jest tylko jeden mały problem: wyświetlenie wszystkich powiązanych wpisów  
    282 zabiera mnóstwo miejsca na ekranie. Z tego powodu, Django pozwala na inny  
     282Jest tylko jeden mały problem: wyświetlenie wszystkich powiązanych wpisów 
     283zabiera mnóstwo miejsca na ekranie. Z tego powodu, Django pozwala na inny 
    283284sposób wyświetlenia wewnętrznie powiązanych obiektów:: 
    284285 
     
    294295========================== 
    295296 
    296 Teraz, kiedy strony edycji i dodawania sondy wyglądają tak jak powinny,  
     297Teraz, kiedy strony edycji i dodawania sondy wyglądają tak jak powinny, 
    297298spróbujmy poprawić stronę z listą sond. 
    298299 
    299 Tak to wygląda obecnie:: 
     300Tak to wygląda obecnie: 
    300301 
    301302.. image:: http://media.djangoproject.com/img/doc/tutorial-trunk/admin04t.png 
     
    303304   :target: http://media.djangoproject.com/img/doc/tutorial-trunk/admin04.png 
    304305 
    305 Domyślnie, Django pokazuje reprezentację ``str()`` każdego obiektu. Oczywiście  
    306 można to trochę dostosować, tak, żeby wyświetlał pożądane przez nas pola.  
    307 Aby to zrobić, użyj opcji ``list_display``, która jest krotką zawierającą nazwy  
     306Domyślnie, Django pokazuje reprezentację ``str()`` każdego obiektu. Oczywiście 
     307można to trochę dostosować, tak, żeby wyświetlał pożądane przez nas pola. 
     308Aby to zrobić, użyj opcji ``list_display``, która jest krotką zawierającą nazwy 
    308309pól do wyświetlenia jako kolumny na stronie z listą sond:: 
    309310 
     
    314315            list_display = ('question', 'pub_date') 
    315316 
    316 Dla sprawdzenia jak się sprawuje ta opcja, dodajmy tam naszą metodę  
     317Dla sprawdzenia jak się sprawuje ta opcja, dodajmy tam naszą metodę 
    317318``was_published_today`` z pierwszej części tutoriala:: 
    318319 
     
    325326   :target: http://media.djangoproject.com/img/doc/tutorial-trunk/admin13.png 
    326327 
    327 Możesz kliknąć na nagłówku każdej z kolumn aby posortować listę sond po  
    328 określonym parametrze -- nie dotyczy to koluny ``was_published_today``,  
     328Możesz kliknąć na nagłówku każdej z kolumn aby posortować listę sond po 
     329określonym parametrze -- nie dotyczy to koluny ``was_published_today``, 
    329330ponieważ sortowanie z użyciem własnych metod nie jest obsługiwane przez Django. 
    330 Zauważ też że nagłówek kolumny dla pola ``was_published_today`` jest domyślnie  
     331Zauważ też że nagłówek kolumny dla pola ``was_published_today`` jest domyślnie 
    331332nazwą danej metody (z podkreślnikami zamienionymi na spacje). 
    332333Można to też zmienić poprzez dodanie atrybutu ``short_description`` dla danej 
     
    338339 
    339340 
    340 Teraz dodajmy kolejne usprawnienia do naszej listy: filtry ("Filters"). Dodaj  
     341Teraz dodajmy kolejne usprawnienia do naszej listy: filtry ("Filters"). Dodaj 
    341342następującą linię do ``Poll.Admin``:: 
    342343 
    343344    list_filter = ['pub_date'] 
    344345 
    345 To spowodowało pojawienie się panelu bocznego "Filter" który pozwala na  
     346To spowodowało pojawienie się panelu bocznego "Filter" który pozwala na 
    346347filtrowanie listy sond po polu ``pub_date``: 
    347348 
     
    352353Rodzaj wyświetlanych filtrów zależy od rodzaju pola po którym chcemy filtrować. 
    353354Ponieważ ``pub_date`` jest polem typu DateTimeField, Django wie że potrzebne 
    354 będą opcje "Any date" ("Każda data"), "Today" ("Dzisiaj"), "Past 7 days"  
     355będą opcje "Any date" ("Każda data"), "Today" ("Dzisiaj"), "Past 7 days" 
    355356("Ostatnie 7 dni"), "This month" ("Ten miesiąc"), "This year" ("Ten rok"). 
    356357 
     
    369370    date_hierarchy = 'pub_date' 
    370371 
    371 Teraz na górze strony pojawiły się pola ułatwiające nawigację po dacie. Na  
     372Teraz na górze strony pojawiły się pola ułatwiające nawigację po dacie. Na 
    372373samej górze pokazane są dostępne lata. Później miesiące i dni. 
    373374 
    374 Pozostało mi jeszcze poinformować Ciebie, że lista sond jest automatycznie  
     375Pozostało mi jeszcze poinformować Ciebie, że lista sond jest automatycznie 
    375376dzielona na strony mieszczące domyślnie do 50 obiektów. Stronicowanie listy 
    376377sond, pole wyszukiwarki, filtry, grupowanie po datach i sortowanie po kolumnach 
     
    378379 
    379380Upiększanie panelu administracyjnego 
    380 ================================= 
     381==================================== 
    381382 
    382383Tak naprawdę, napis "Django administration"  na górze każdej strony jest nieco 
     
    391392Django ma sprawdzać w poszukiwaniu szablonów. 
    392393 
    393 Domyślnie ``TEMPLATE_DIRS`` jest puste. Dodajmy tam linię aby poinformować  
     394Domyślnie ``TEMPLATE_DIRS`` jest puste. Dodajmy tam linię aby poinformować 
    394395Django gdzie ma szukać szablonów:: 
    395396 
     
    398399    ) 
    399400 
    400 Skopiuj teraz plik ``admin/base_site.html`` z domyślnego katalogu szablonów  
     401Skopiuj teraz plik ``admin/base_site.html`` z domyślnego katalogu szablonów 
    401402Django (``django/contrib/admin/templates``) do podkatalogu admin w którymkolwiek 
    402403z katalogów które ustawiłeś w ``TEMPLATE_DIRS``. Na przykład jeśli umieściłeś 
    403 w ``TEMPLATE_DIRS`` linijkę ``/home/my_username/mytemplates``, jak powyżej,  
    404 to skopiuj ``django/contrib/admin/templates/admin/base_site.html`` do  
     404w ``TEMPLATE_DIRS`` linijkę ``/home/my_username/mytemplates``, jak powyżej, 
     405to skopiuj ``django/contrib/admin/templates/admin/base_site.html`` do 
    405406katalogu ``/home/my_username/mytemplates/admin/base_site.html``. Nie zapomnij 
    406407o tym podkatalogu ``admin``. 
    407408 
    408 Teraz wystarczy wyedytować skopiowany plik zastępując domyślne teksty Django  
     409Teraz wystarczy wyedytować skopiowany plik zastępując domyślne teksty Django 
    409410swoimi. 
    410411 
    411412Zauważ, że każdy domyślny szablon Django może zostać nadpisany. Aby to zrobić, 
    412 zrób dokładnie to samo co zrobiłeś przed chwilą z ``base_site.html`` --  
     413zrób dokładnie to samo co zrobiłeś przed chwilą z ``base_site.html`` -- 
    413414skopiuj go z domyślnego katalogu do swojego, i wykonaj zmiany. 
    414415 
    415 Uważni czytelnicy mogą zapytać: skoro ``TEMPLATE_DIRS`` był domyślnie pusty,  
    416 jak Django wyszukiwał domyślne szablony do panelu administracyjnego ?  
     416Uważni czytelnicy mogą zapytać: skoro ``TEMPLATE_DIRS`` był domyślnie pusty, 
     417jak Django wyszukiwał domyślne szablony do panelu administracyjnego ? 
    417418Odpowiedź: domyślnie, Django automatycznie szuka w podkatalogu ``templates/`` 
    418 każdej aplikacji. Zajrzyj do `loader types documentation`_, żeby dowiedzieś 
     419każdej aplikacji. Zajrzyj do `loader types documentation (en)`_, żeby dowiedzieć 
    419420się więcej. 
    420421 
    421 .. _loader types documentation: ../templates_python/#loader-types 
     422.. _loader types documentation (en): http://djangoproject.com/documentation/templates_python/#loader-types 
    422423 
    423424Zmiana wyglądu listy projektów 
    424425============================== 
    425426 
    426 Kontynuując temat zmian wyglądu, możesz także dostosować dla siebie stronę z  
     427Kontynuując temat zmian wyglądu, możesz także dostosować dla siebie stronę z 
    427428listą dostępnych aplikacji (indeks) panelu administracyjnego. 
    428429 
    429 Domyślnie pokazywane są wszystkie dostępne aplikacje, zgodnie z Twoimi  
    430 ustawieniami ``INSTALLED_APPS``. Ale kolejność, w jakiej są wyświetlane, jest  
    431 losowa, a Ty możesz sobie zażyczyć konkretnego wyglądu tejże strony. Poza tym,  
    432 indeks jest prawdopodobnie najważniejszą częścią panelu, więc powinien być  
     430Domyślnie pokazywane są wszystkie dostępne aplikacje, zgodnie z Twoimi 
     431ustawieniami ``INSTALLED_APPS``. Ale kolejność, w jakiej są wyświetlane, jest 
     432losowa, a Ty możesz sobie zażyczyć konkretnego wyglądu tejże strony. Poza tym, 
     433indeks jest prawdopodobnie najważniejszą częścią panelu, więc powinien być 
    433434prosty w użyciu. 
    434435 
    435 Szablon który tutaj użyjemy to ``admin/index.html`` (wykonaj te same czynności  
    436 co przy ``admin/base_site.html`` w poprzedniej sekcji - -skopiuj go z katalogu 
    437 domyślnego do swojego). Następnie wyedytuj ten plik -` zobaczysz że jest w nim 
    438 użyty tag ``{% get_admin_app_list as app_list %}``. Jest to ten magiczny  
    439 element, który zwraca listę zainstalowanych aplikacji Django. Zamiast używać  
    440 tego taga, możesz wstawić "na sztywno" odnośniki do konkretnych stron panelu  
     436Szablon który tutaj użyjemy to ``admin/index.html`` (wykonaj te same czynności 
     437co przy ``admin/base_site.html`` w poprzedniej sekcji -- skopiuj go z katalogu 
     438domyślnego do swojego). Następnie otwórz ten plik - zobaczysz że jest w nim 
     439użyty tag ``{% get_admin_app_list as app_list %}``. Jest to ten magiczny 
     440element, który zwraca listę zainstalowanych aplikacji Django. Zamiast używać 
     441tego taga, możesz wstawić "na sztywno" odnośniki do konkretnych stron panelu 
    441442odpowiedzialnych za konkretne obiekty - i ułożyć je tak jak uważasz, że będzie 
    442443najlepiej. 
    443444 
    444445Django pozwala też na użycie pewnego skrótu w tym temacie. Wykonaj polecenie 
    445 ``python django-admin.py adminindex polls``, aby dostać cały kod szablonu  
     446``python django-admin.py adminindex polls``, aby dostać cały kod szablonu 
    446447który należy umieścić w szablonie indeksu. Jest to na początku bardzo przydatne. 
    447448 
    448 Aby dowiedzieć się więcej o dostosowywaniu wyglądu panelu administracyjnego  
    449 Django, zajrzyj na `Django admin CSS guide`_. 
    450  
    451 Kiedy już poznasz panel administracyjny Django, przeczytaj  
     449Aby dowiedzieć się więcej o dostosowywaniu wyglądu panelu administracyjnego 
     450Django, zajrzyj na `Django admin CSS guide (en)`_. 
     451 
     452Kiedy już poznasz panel administracyjny Django, przeczytaj 
    452453`trzecią część tego tutoriala`_ aby zacząć tworzyć publicznie widoczną stronę 
    453454aplikacji. 
    454455 
    455 .. _Django admin CSS guide: ../admin_css/ 
     456.. _Django admin CSS guide (eN): http://djangoproject.com/documentation/admin_css/ 
    456457.. _trzecią część tego tutoriala: ../tutorial03/