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.

Leave a Reply