{"title":"Pisanie pierwszej aplikacji Django, część 1.","version":"5.0","locale":"pl","docname":"intro/tutorial01","url":"/pl/5.0/intro/tutorial01/","canonical":"https://djangodocs.dev/pl/5.0/intro/tutorial01/","summary":"Nauczmy się na przykładzie. Z pomocą tego tutoriala przeprowadzimy cię przez stworzenie prostej aplikacji ankietowej.","html":"<h1>Pisanie pierwszej aplikacji Django, część 1.<a class=\"heading-anchor\" href=\"#writing-your-first-django-app-part-1\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Nauczmy się na przykładzie.</p>\n<p>Z pomocą tego tutoriala przeprowadzimy cię przez stworzenie prostej aplikacji ankietowej.</p>\n<p>Będzie się ona składać z dwóch części:</p>\n<ul class=\"simple\">\n<li><p>Publicznej strony, która pozwala ludziom obejrzeć ankiety i głosować w nich.</p></li>\n<li><p>Panelu administracyjnego, który pozwala ci dodawać, zmieniać i usuwać ankiety.</p></li>\n</ul>\n<p>Będziemy zakładać, że masz już <a class=\"reference internal\" href=\"/pl/5.0/intro/install/\"><span class=\"doc\">zainstalowane Django</span></a>. Możesz sprawdzić, czy Django jest zainstalowane i w jakiej wersji uruchamiając następującą komendę w prompcie powłoki (wskazywanym przez prefix $):</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python -m django --version\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -m django --version\n</code></pre></div></div></div>\n<p>Jeśli Django jest zainstalowane, powinieneś zobaczyć wersję swojej instalacji. Jeśli nie jest, dostaniesz błąd „No module named django”.</p>\n<p>This tutorial is written for Django 5.0, which supports Python 3.10 and\nlater. If the Django version doesn’t match, you can refer to the tutorial for\nyour version of Django by using the version switcher at the bottom right corner\nof this page, or update Django to the newest version. If you’re using an older\nversion of Python, check <a class=\"reference internal\" href=\"/pl/5.0/faq/install/#faq-python-version-support\"><span class=\"std std-ref\">Której wersji Pythona mogę użyć z Django?</span></a> to find a compatible\nversion of Django.</p>\n<p>Zobacz <a class=\"reference internal\" href=\"/pl/5.0/topics/install/\"><span class=\"doc\">Jak zainstalować Django</span></a>, by znaleźć wskazówki jak usunąć stare wersje Django i zainstalować nową.</p>\n<aside class=\"admonition-where-to-get-help admonition\" role=\"note\">\n<p class=\"admonition-title\">Gdzie szukać pomocy:</p>\n<p>Jeśli masz trudności w przejściu tego tutorialu, przejdź do sekcji <a class=\"reference internal\" href=\"/pl/5.0/faq/help/\"><span class=\"doc\">Uzyskiwanie pomocy</span></a> często zadawanych pytań.</p>\n</aside>\n<section id=\"creating-a-project\">\n<h2>Tworzenie projektu<a class=\"heading-anchor\" href=\"#creating-a-project\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Jeśli po raz pierwszy korzystasz z Django, będziesz musiał zająć się wstępną konfiguracją. Konkretnie, będziesz potrzebował wygenerować trochę kodu, który stworzy <a class=\"reference internal\" href=\"/pl/5.0/glossary/#term-project\"><span class=\"xref std std-term\">projekt</span></a> Django – zbiór ustawień dla instacji Django, wliczając konfigurację bazy danych, ustawienia specyficzne dla Django i specyficzne dla aplikacji.</p>\n<p>Z linii komend, wejdź <code class=\"docutils literal notranslate\">cd</code> do katalogu, gdzie chciałbyś przechowywać swój kod, następnie uruchom następującą komendę:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-1-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>django-admin startproject mysite\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-1-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> django-admin startproject mysite\n</code></pre></div></div></div>\n<p>Stworzy ona katalog <code class=\"docutils literal notranslate\">mysite</code> w twoim bieżącym katalogu. Jeśli nie zadziałała, zobacz <a class=\"reference internal\" href=\"/pl/5.0/faq/troubleshooting/#troubleshooting-django-admin\"><span class=\"std std-ref\">Problemy z uruchomieniem django-admin</span></a>.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Informacja</p>\n<p>Musisz unikać nazywania projektów tak samo jak wbudowane w Pythona albo Django komponenty. W szczególności znaczy to, że powinieneś unikać używania nazw jak <code class=\"docutils literal notranslate\">django</code> (co wejdzie w konflikt z samym Django) lub <code class=\"docutils literal notranslate\">test</code> (wejdzie w konflikt z wbudowanym pakietem Pythona).</p>\n</aside>\n<p>Spójrzmy co stworzyło <a class=\"reference internal\" href=\"/pl/5.0/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\">startproject</code></a>:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>mysite/\n    manage.py\n    mysite/\n        __init__.py\n        settings.py\n        urls.py\n        asgi.py\n        wsgi.py\n</code></pre></div>\n<p>Te pliki to:</p>\n<ul class=\"simple\">\n<li><p>Zewnętrzny katalog główny <code class=\"file docutils literal notranslate\">mysite/</code> jest pojemnikiem na twój projekt. Jego nazwa nie ma znaczenia dla Django; możesz zmienić jego nazwę na dowolną, jaką chcesz.</p></li>\n<li><p><code class=\"file docutils literal notranslate\">manage.py</code>: Narzędzie linii komend, które pozwala ci oddziaływać z tym projektem Django na wiele sposobów. Możesz przeczytać szczegóły na temat <code class=\"file docutils literal notranslate\">manage.py</code> w <a class=\"reference internal\" href=\"/pl/5.0/ref/django-admin/\"><span class=\"doc\">django-admin and manage.py</span></a>.</p></li>\n<li><p>Wewnętrzny katalog <code class=\"file docutils literal notranslate\">mysite/</code> jest właściwym pakietem Pythona dla twojego projektu. Jego nazwa jest nazwą pakietu Pythona, którą musisz używać, aby zaimportować cokolwiek w tym pakiecie (np. <code class=\"docutils literal notranslate\">mysite.urls</code>).</p></li>\n<li><p><code class=\"file docutils literal notranslate\">mysite/__init__.py</code>: Pusty plik, który mówi Pythonowi, że ten katalog powinien być uważany za pakiet Pythona. Jeśli jesteś początkujący w Pythonie, przeczytaj <a class=\"reference external\" href=\"https://docs.python.org/3/tutorial/modules.html#tut-packages\" title=\"(w Python v3.14)\"><span class=\"xref std std-ref\">więcej o pakietach</span></a> w oficjalnej dokumentacji Pythona.</p></li>\n<li><p><code class=\"file docutils literal notranslate\">mysite/settings.py</code>: Ustawienia/konfiguracja dla tego projektu Django. <a class=\"reference internal\" href=\"/pl/5.0/topics/settings/\"><span class=\"doc\">Ustawienia Django</span></a> powie ci wszystko o tym, jak działają ustawienia.</p></li>\n<li><p><code class=\"file docutils literal notranslate\">mysite/urls.py</code>: Deklaracje URL-i dla tego projektu Django; „spis treści” twojej strony opartej na Django. Możesz przeczytać więcej o URL-ach w <a class=\"reference internal\" href=\"/pl/5.0/topics/http/urls/\"><span class=\"doc\">URL dispatcher</span></a>.</p></li>\n<li><p><code class=\"file docutils literal notranslate\">mysite/asgi.py</code>: Punkt wejściowy dla serwerów WWW kompatybilnych z ASGI do serwowania twojego projektu. Zobacz <a class=\"reference internal\" href=\"/pl/5.0/howto/deployment/asgi/\"><span class=\"doc\">Jak wdrażać z ASGI</span></a> po więcej szczegółów.</p></li>\n<li><p><code class=\"file docutils literal notranslate\">mysite/wsgi.py</code>: Punkt wejściowy dla serwerów WWW kompatybilnych z WSGI do serwowania twojego projektu. Zobacz <a class=\"reference internal\" href=\"/pl/5.0/howto/deployment/wsgi/\"><span class=\"doc\">Jak wdrażać z WSGI</span></a> dla większej ilości szczegółów.</p></li>\n</ul>\n</section>\n<section id=\"the-development-server\">\n<h2>Serwer deweloperski<a class=\"heading-anchor\" href=\"#the-development-server\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Zweryfikujmy czy twój projekt Django działa. Przejdź do zewnętrzenego katalogu <code class=\"file docutils literal notranslate\">mysite</code>, jeśli jeszcze tego nie zrobiłeś, i uruchom następujące polecenia:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-2-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python manage.py runserver\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-2-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py manage.py runserver\n</code></pre></div></div></div>\n<p>Zobaczysz następujące wyjście w linii komend:</p>\n<pre class=\"literal-block\">Performing system checks...\n\nSystem check identified no issues (0 silenced).\n\nYou have unapplied migrations; your app may not work properly until they are applied.\nRun 'python manage.py migrate' to apply them.\n\n09 sie 2026 - 15:50:53\nDjango version 5.0, using settings 'mysite.settings'\nStarting development server at <a class=\"reference external\" href=\"http://127.0.0.1:8000/\">http://127.0.0.1:8000/</a>\nQuit the server with CONTROL-C.</pre>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Informacja</p>\n<p>Zignoruj na razie ostrzeżenie o niezastosowanych migracjach bazy danych; zajmiemy się bazą danych za chwilę.</p>\n</aside>\n<p>Kiedy serwer jest już uruchomiony, odwiedź <a class=\"reference external\" href=\"http://127.0.0.1:8000/\">http://127.0.0.1:8000/</a> w swojej przeglądarce internetowej. Zobaczysz stronę „Gratulacje!” ze startującą rakietą. Zadziałało!</p>\n<p>Wystartowałeś serwer deweloperski Django, lekki web-serwer napisany w całości w Pythonie. Zawarliśmy go w Django, abyś mógł dewelopować rzeczy błyskawicznie, nie musząc zajmować się konfiguracją produkcyjnego serwera – jak na przykład Apache – dopóki nie będziesz gotowy na produkcję.</p>\n<p>Teraz jest dobry moment, by zwrócić na to uwagę: <strong>nie</strong> używaj tego serwera w czymkolwiek podobnym do produkcyjnego środowiska. Jest on przewidziany tylko do użytku podczas dewelopmentu. (Jesteśmy w świecie tworzenia web-frameworków, nie web-serwerów.)</p>\n<p>(To serve the site on a different port, see the <a class=\"reference internal\" href=\"/pl/5.0/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\">runserver</code></a> reference.)</p>\n<aside class=\"admonition-automatic-reloading-of-djadmin-runserver admonition\" role=\"note\">\n<p class=\"admonition-title\">Automatyczne przeładowywanie <a class=\"reference internal\" href=\"/pl/5.0/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\">runserver</code></a></p>\n<p>Serwer deweloperski automatycznie przeładowuje kod Pythona dla każdego żądania, wedle potrzeby. Nie musisz restartować serwera, aby zmiany w kodzie miały efekt. Jednakże niektóre działania, jak dodawanie plików, nie powodują restartu, więc będziesz musiał zrestartować serwer w tych przypadkach.</p>\n</aside>\n</section>\n<section id=\"creating-the-polls-app\">\n<h2>Tworzenie aplikacji Ankiety<a class=\"heading-anchor\" href=\"#creating-the-polls-app\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Teraz, kiedy twoje środowisko – „projekt” – jest uruchomione, jesteś gotowy zabrać się do pracy.</p>\n<p>Każda aplikacjia, którą piszesz w Django, składa się z pakietu Pythona, który realizuję pewną konwencję. Django zawiera narzędzie, które automatycznie generuje podstawową strukturę katalogów aplikacji, abyś mógł skupić się na pisaniu kodu zamiast na tworzeniu katalogów.</p>\n<aside class=\"admonition-projects-vs-apps admonition\" role=\"note\">\n<p class=\"admonition-title\">Projekty versus aplikacje</p>\n<p>Jaka jest różnica pomiędzy projektem a aplikacją? Aplikacja jest aplikacją webową, która coś robi – na przykład system blogowy, baza danych publicznych wpisów lub mała aplikacja ankietowa. Projekt jest zbiorem konfiguracji i aplikacji dla konkretnej witryny. Projekt może zawierać wiele aplikacji. Aplikacja może być w wielu projektach.</p>\n</aside>\n<p>Twoje aplikacje mogą żyć gdziekolwiek na twojej <a class=\"reference external\" href=\"https://docs.python.org/3/tutorial/modules.html#tut-searchpath\" title=\"(w Python v3.14)\"><span class=\"xref std std-ref\">ścieżce Pythona</span></a>. W tym tutorialu stworzymy aplikację ankietową w tym samym katalogu co twój plik <code class=\"file docutils literal notranslate\">manage.py</code>, aby mogła być zaimportowana jako jego własny moduł najwyższego poziomu, zamiast podmodułu <code class=\"docutils literal notranslate\">mysite</code>.</p>\n<p>Aby stworzyć swoją aplikację, upewnij się, że jesteś w tym samym katalogu co <code class=\"file docutils literal notranslate\">manage.py</code> i wpisz tę komendę:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-3-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python manage.py startapp polls\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-3-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py manage.py startapp polls\n</code></pre></div></div></div>\n<p>Stworzy ona katalog <code class=\"file docutils literal notranslate\">polls</code>, który jest tak rozplanowany:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>polls/\n    __init__.py\n    admin.py\n    apps.py\n    migrations/\n        __init__.py\n    models.py\n    tests.py\n    views.py\n</code></pre></div>\n<p>Ta struktora katalogów będzie domem dla aplikacji ankietowej.</p>\n</section>\n<section id=\"write-your-first-view\">\n<h2>Napisz swój pierwszy widok<a class=\"heading-anchor\" href=\"#write-your-first-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Napiszmy pierwszy widok. Otwórz plik <code class=\"docutils literal notranslate\">polls/views.py</code> i umieść tam następujący pythonowy kod:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">polls/views.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.http</span> <span class=\"kn\">import</span> HttpResponse\n\n\n<span class=\"k\">def</span> <span class=\"nf\">index</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    <span class=\"k\">return</span> HttpResponse<span class=\"p\">(</span><span class=\"s2\">&quot;Hello, world. You&#39;re at the polls index.&quot;</span><span class=\"p\">)</span>\n</code></pre></figure>\n<p>This is the most basic view possible in Django. To access it in a browser, we\nneed to map it to a URL - and for this we need to define a URL configuration,\nor „URLconf” for short. These URL configurations are defined inside each\nDjango app, and they are Python files named <code class=\"docutils literal notranslate\">urls.py</code>.</p>\n<p>To define a URLconf for the <code class=\"docutils literal notranslate\">polls</code> app, create a file <code class=\"docutils literal notranslate\">polls/urls.py</code>\nwith the following content:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">polls/urls.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> path\n\n<span class=\"kn\">from</span> <span class=\"nn\">.</span> <span class=\"kn\">import</span> views\n\nurlpatterns <span class=\"o\">=</span> <span class=\"p\">[</span>\n    path<span class=\"p\">(</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> views<span class=\"o\">.</span>index<span class=\"p\">,</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;index&quot;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>Your app directory should now look like:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>polls/\n    __init__.py\n    admin.py\n    apps.py\n    migrations/\n        __init__.py\n    models.py\n    tests.py\n    urls.py\n    views.py\n</code></pre></div>\n<p>The next step is to configure the global URLconf in the <code class=\"docutils literal notranslate\">mysite</code> project to\ninclude the URLconf defined in <code class=\"docutils literal notranslate\">polls.urls</code>. To do this, add an import for\n<code class=\"docutils literal notranslate\">django.urls.include</code> in <code class=\"docutils literal notranslate\">mysite/urls.py</code> and insert an\n<a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\">include()</code></a> in the <code class=\"docutils literal notranslate\">urlpatterns</code> list, so you have:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">mysite/urls.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> include<span class=\"p\">,</span> path\n\nurlpatterns <span class=\"o\">=</span> <span class=\"p\">[</span>\n    path<span class=\"p\">(</span><span class=\"s2\">&quot;polls/&quot;</span><span class=\"p\">,</span> include<span class=\"p\">(</span><span class=\"s2\">&quot;polls.urls&quot;</span><span class=\"p\">)),</span>\n    path<span class=\"p\">(</span><span class=\"s2\">&quot;admin/&quot;</span><span class=\"p\">,</span> admin<span class=\"o\">.</span>site<span class=\"o\">.</span>urls<span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>Funkcja <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\">include()</code></a> function pozwala na odniesienia do innych URLconfów. Kiedykolwiek Django napotyka <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\">include()</code></a>, odcina tę część URL-a, która została dopasowana do tego punktu i wysyła pozostłą część ciągu znaków do zaincludowanego URLconfa, do dalszego przetworzenia.</p>\n<p>Pomysłem leżącym za <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\">include()</code></a> jest ułatwienie podłączania URL-i. Skoro ankiety są w swoim własnym URLconfie (<code class=\"docutils literal notranslate\">polls/urls.py</code>), mogą być umieszczone pod „/polls/” lub pod „/fun_polls/” lub pod „/content/polls/” lub dowolnym innym początkiem ścieżki i aplikacja wciąż będzie działać.</p>\n<aside class=\"admonition-when-to-use-func-django-urls-include admonition\" role=\"note\">\n<p class=\"admonition-title\">Kiedy używać <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\">include()</code></a></p>\n<p>Powinieneś używać <code class=\"docutils literal notranslate\">include()</code> zawsze, gdy uwzględniasz inne wzorce URL. <code class=\"docutils literal notranslate\">admin.site.urls</code> jest jedynym wyjątkiem od tej reguły.</p>\n</aside>\n<p>Podłączyłeś właśnie widok <code class=\"docutils literal notranslate\">index</code> do URLconf. Zweryfikuj, czy działa, uruchamiając następujące polecenie:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-4-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python manage.py runserver\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-4-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py manage.py runserver\n</code></pre></div></div></div>\n<p>Przejdź do <a class=\"reference external\" href=\"http://localhost:8000/polls/\">http://localhost:8000/polls/</a> w swojej przeglądarce. Powinieneś zobaczyć napis „<em>Hello, world. You’re at the polls index.</em>”, który zdefiniowałeś w widoku <code class=\"docutils literal notranslate\">index</code>.</p>\n<aside class=\"admonition-page-not-found admonition\" role=\"note\">\n<p class=\"admonition-title\">Strona nie została znaleziona?</p>\n<p>Jeśli dostajesz tutaj stronę błędu, upewnij się, że wchodzisz na <a class=\"reference external\" href=\"http://localhost:8000/polls/\">http://localhost:8000/polls/</a>, a nie na <a class=\"reference external\" href=\"http://localhost:8000/\">http://localhost:8000/</a>.</p>\n</aside>\n<p>Do funkcji <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\">path()</code></a> są przekazane cztery argumenty, dwa wymagane: <code class=\"docutils literal notranslate\">route</code> i <code class=\"docutils literal notranslate\">view</code> oraz dwa opcjonalne: <code class=\"docutils literal notranslate\">kwargs</code> i <code class=\"docutils literal notranslate\">name</code>. Warto w tym momencie dowiedzieć się, do czego służą.</p>\n<section id=\"path-argument-route\">\n<h3>Argument <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\">path()</code></a>: <code class=\"docutils literal notranslate\">route</code><a class=\"heading-anchor\" href=\"#path-argument-route\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\">route</code> jest ciągiem znaków, który zawiera wzorzec URL. Django zaczyna od pierwszego wzorca i idzie w dół listy, porównując zażądany URL z wszystkimi wzorcami aż odnajdzie taki, który pasuje.</p>\n<p>Wzorce nie przeszukują parametrów GET i POST lub nazwy domeny. Na przykład, w żądaniu do <code class=\"docutils literal notranslate\">https://www.example.com/myapp/</code>, URLconf będzie szukał <code class=\"docutils literal notranslate\">myapp/</code>. W żądaniu do <code class=\"docutils literal notranslate\">https://www.example.com/myapp/?page=3</code>, URLconf też będzie szukał <code class=\"docutils literal notranslate\">myapp/</code>.</p>\n</section>\n<section id=\"path-argument-view\">\n<h3>Argument <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\">path()</code></a>: <code class=\"docutils literal notranslate\">view</code><a class=\"heading-anchor\" href=\"#path-argument-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Kiedy Django znajdzie pasujący wzorzec, wywołuje podaną funkcję widoku z obiektem <a class=\"reference internal\" href=\"/pl/5.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> jako pierwszym argumentem i dowolnymi „złapanymi” wartościami ze ścieżki jako argumentami nazwanymi. Za chwilę damy tego przykład.</p>\n</section>\n<section id=\"path-argument-kwargs\">\n<h3>Argument <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\">path()</code></a>: <code class=\"docutils literal notranslate\">kwargs</code><a class=\"heading-anchor\" href=\"#path-argument-kwargs\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Arbitralne argumenty słownikowe mogą być przekazane w słowniku do docelowego widoku. Nie będziemy używać tej funkcjonalności Django w tym tutorialu.</p>\n</section>\n<section id=\"path-argument-name\">\n<h3>Argument <a class=\"reference internal\" href=\"/pl/5.0/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\">path()</code></a>: <code class=\"docutils literal notranslate\">name</code><a class=\"heading-anchor\" href=\"#path-argument-name\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Nazwanie twojego URL-a pozwala odwołać się do niego jednoznacznie z każdego miejsca w Django, szczególnie z wnętrza szablonów. Ta potężna cecha pozwala ci na robienie globalnych zmian we wzorcach URL projektu przez zmianę w pojedynczym pliku.</p>\n<p>Jeśli czujesz się dobrze z przepływem żądań i odpowiedzi, przeczytaj <a class=\"reference internal\" href=\"/pl/5.0/intro/tutorial02/\"><span class=\"doc\">drugą część tego tutoriala</span></a>, aby zacząć pracę z bazą danych.</p>\n</section>\n</section>","rootId":"writing-your-first-django-app-part-1","toc":[{"title":"Tworzenie projektu","anchor":"creating-a-project","children":[]},{"title":"Serwer deweloperski","anchor":"the-development-server","children":[]},{"title":"Tworzenie aplikacji Ankiety","anchor":"creating-the-polls-app","children":[]},{"title":"Napisz swój pierwszy widok","anchor":"write-your-first-view","children":[{"title":"Argument path(): route","anchor":"path-argument-route","children":[]},{"title":"Argument path(): view","anchor":"path-argument-view","children":[]},{"title":"Argument path(): kwargs","anchor":"path-argument-kwargs","children":[]},{"title":"Argument path(): name","anchor":"path-argument-name","children":[]}]}],"breadcrumbs":[{"docname":"intro/index","title":"Pierwsze kroki","url":"/pl/5.0/intro/"}],"prev":{"docname":"intro/install","title":"Przewodnik szybkiej instalacji","url":"/pl/5.0/intro/install/"},"next":{"docname":"intro/tutorial02","title":"Pisanie pierwszej aplikacji Django, część 2.","url":"/pl/5.0/intro/tutorial02/"},"formats":{"html":"/pl/5.0/intro/tutorial01/","markdown":"/pl/5.0/intro/tutorial01.md","json":"/pl/5.0/intro/tutorial01.json"},"source":"https://github.com/django/django/blob/stable/5.0.x/docs/intro/tutorial01.txt","official":"https://docs.djangoproject.com/pl/5.0/intro/tutorial01/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}