0. Instalación
Para instalar Django tiraremos do PIP, e só con escreber
sudo pip install django
1. Creando os arquivos
Para crear os arquivos entramos no directorio no que queiramos deixar o proxecto e executaremos:
django-admin.py startproject <nome do proxecto>
Neste caso
django-admin.py startproject hl_django
Esto creará un cartafol con outro con ese nome e un script `manage.py', este script permitaranos manexar
a instalación, por exemplo se queremos iniciar o proxecto nun servidor web faremos:
python manage.py runserver
En Django cada proxecto está composto dun numero de aplicacións, crearemos unha para o servidor con ese script.
python manage.py startapp meu_foro
Isto creará outro cartafol para `meu_foro', xa está todo no seu sitio, pasemos entón a configuración.
2. Enlazando os componentes
A configuración estará dentro do arquivo `settings.py' no cartafol do proxecto, `hl_django', está bastante comentadiño e pódese entender ben, pero ímos describir as que póde ser interesante considerar o principio...
DEBUG = True TEMPLATE_DEBUG = DEBUG
Estas dúas directivas indican se queremos activar a depuración do código en xeral a primeira e das plantillas a segunda, convén telas activadas (postas a True) mentres andamos trasteando nos arquivos e desactivalas (postas a False) cando o subamos a un servidor público.
Nota: todos os arquivos de configuración son realmente scripts de `python', con todas as posibilidades que iso trae, se queredes por exemplo podedes dicir que so se active a depuración se hai unha variable de entorno que o diga:
import os DEBUG = os.getenv("DEBUG") is not None TEMPLATE_DEBUG = DEBUG
Antes de marcar DEBUG voltaba cun erro, despois non |
ADMINS = ( # ('Your Name', 'your_email@example.com'), ) MANAGERS = ADMINS
No caso de ter que indicar os nomes/correo de quen administre o servidor tomaranse de aquí é mesmo para quenes o xestionan.
O seguinte é a configuración da base de datos, traduzo os comentarios por se queda máis claro
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # Engade 'postgresql_psycopg2', 'mysql', 'sqlite3' ou 'oracle'. 'NAME': '', # Nome da base de datos (ou arquivo no caso de usar sqlite3). # Os seguintes parámentros non se usan con sqlite3: 'USER': '', 'PASSWORD': '', 'HOST': '', # Vacío para localhost a través de sockets de dominio ou '127.0.0.1' para localhost por TCP. 'PORT': '', # Unha cadea vacía para o porto por defecto } }
Por exemplo, se queremos unha base de datos sqlite en db.sqlite3 (esta será da que tiraremos o resto do exemplo):
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'db.sqlite3', } }
Ademáis o máis seguro e que querades cambiar as de TIME_ZONE, LANGUAGE_CODE.
3. O panel de control
Django trae de paquete unhas cantas cousas, entre elas está un panel de control para manexar os datos, se queremos activalo só temos que activalo descomentando un par de liñas de código, no `settings.py' en INSTALLED_APPS o 'django.contrib.admin' e no `urls.py' (xa veremos máis tarde que fai) as seguintes liñas:
from django.contrib import admin admin.autodiscover() # E na declaración do urlpatterns url(r'^admin/', include(admin.site.urls)),
Se agora lanzamos o servidor con
python manage.py runserver
E accedemos a `http://127.0.0.1:8000/admin/', queixarase de que non hai base de datos... para creala usaremos este comando:
python manage.py syncdb
Comezará a xerar tablas e preguntará se queremos crear un superusuario, dirémoslle que `yes', e despois de darlle nome de usuario, email e contrasinal acabará co proceso, agora xa podemos acceder o panel de control.
Ben... hai pouca cousa, haberá que poñerse a crear datos...
4. Xeración do modelo
Comezamos entón co foro, o primeiro que faremos é definir os datos que manexaremos, polo que pon no panel de control sabemos que os usuarios xa os manexa Django sen precisar de entrar niso, así que centrándos no que queremos facer creo que podemos estructuralo da seguinte forma:
- Temos Temas, cada un con un nome e unha descripción (os ID non os hai que definir, creanse automáticamente).
- Cada tema ten un número de Fíos, estes co nome, o Tema o que pertencen, o usuario que o creou, e unha data de creación.
- Do mesmo xeito cada fío ten un ou varios Posts, coa información do usuario que o enviou, o fío o que pertencen e o seu texto.
E como introducimos iso no proxecto? pois no directorio `meu_foro' atoparemos un arquivo `models.py', ahí podemos definilos coma subclases do `Model' de `django.db.models' (que xa estará importado o comezo do ficheiro), iso sí, se queremos tirar dos usuarios de Django teremos que importar o módulo así:
from django.contrib.auth.models import User
Nota: Convén poñer isto o comezo mesmo do arquivo para que lea ven os caracteres acentuados e demáis:
#coding: utf-8
Voltando os modelos
# Temos a clase tema, cos campos de nome e descripción class Tema(models.Model): nome = models.CharField(max_length=50) descripcion = models.CharField(max_length=1000) # Os fíos, co seu nome, tema, usuario que o creou e data de creación class Fio(models.Model): nome = models.CharField(max_length=50) tema = models.ForeignKey(Tema) # Ollo o dato, así indicamos que é outro dato, con ForeignKey op = models.ForeignKey(User) # Outro campo data_creacion = models.DateTimeField('data de publicación') # E o último, o post no fío class Post(models.Model): fio = models.ForeignKey(Fio) usuario = models.ForeignKey(User) data_creacion = models.DateTimeField('data de publicación') texto = models.TextField()
Agora para convertir estes modelos en táboas na base de dados teremos que incluír 'meu_foro' na lista das INSTALLED_APPS no `settings.py' e facer isto:
python manage.py sql meu_foro
Amosará o código para crear as táboas, se queremos aplicalo só temos que facer
python manage.py syncdb
Un último paso e xa os teremos a vista no panel de control... no directorio `meu_foro' crearemos un script `admin.py' con este código:
# Partindo dos modelos (Tema, Fio e Post) definidos para meu_foro from meu_foro.models import Tema, Fio, Post # E o xestor do panel de control from django.contrib import admin # Rexistramos cada modelo no panel de control for modelo in (Tema, Fio, Post): admin.site.register(modelo)
E desta xa está, xa temos o noso panel de control funcionando cos modelos do foro, o seguinte paso será preparar a navegación polo foro.
No hay comentarios:
Publicar un comentario