Django - start w 15 minut. Wersja skrócona.
Jest to wersja skrócona tego wpisu.
Utworzenie nowego projektu:
cmd:
django-admin.py startproject faststart
Edycja settings.py:
konfiguracja bazy danych:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': './test.db', # Or path to database file if using sqlite3. 'USER': '', # Not used with sqlite3. 'PASSWORD': '', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. } }
Odblokowanie panelu administracyjnego i dodanie naszej aplikacji:
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'newses' )
Ustawienie języka i strefy czasowej:
LANGUAGE_CODE = 'pl-PL' TIME_ZONE = 'Europe/Warsaw'
Utworzenie aplikacji newses:
python manage.py sql newses
Utworzenie modelu w pliku newses/models.py:
# -*- coding: utf-8 -*- from django.db import models from datetime import datetime class News(models.Model): subject = models.CharField(max_length=100, verbose_name=u'Tytuł') content = models.TextField(verbose_name=u'Treść') date = models.DateField(default=datetime.now, verbose_name=u'Data utworzenia') def __unicode__(self): return self.subject class Meta: verbose_name = u'Aktualność' verbose_name_plural = u'Aktualności'
Utworzenie szablonów w plikach:
newses/templates/newses/news_list.html:
<html>
<head>
<title>Aktualności</title>
</head>
<body>
<h1>Aktualności</h1>
{% for news in object_list %}
<li><a href="/news/{{ news.id }}">{{ news.subject }}</a></li>
{% endfor %}
</body>
</html>
i newses/templates/newses/news_detail.html:
<html>
<head>
<title>Aktualność: {{ object.subject }}</title>
</head>
<body>
<h1>{{ object.subject }}</h1>
<div>
<div>{{ object.date }}</div>
<p>{{ object.content }}</p>
</div>
</body>
</html>
Dopisanie importów i mapowanai urli do pliku urls.py
# -*- coding: utf-8 -*- from django.conf.urls.defaults import patterns, include, url # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() from django.views.generic import ListView, DetailView from newses.models import News urlpatterns = patterns('', url(r'^$', ListView.as_view(model=News,)), url(r'^news/(?P<pk>\d+)/$', DetailView.as_view(model=News)), url(r'^admin/', include(admin.site.urls)), )
Utworzenie tabel w bazie:
python manage.py syncdb
I testujemy pod adresem http://127.0.0.1:8000/:
python manage.py runserver
A tutaj projekt do pobrania.