Soluciones IT

Anuncio
Soluciones IT
Django es un “Framework web”, es decir, una plataforma de desarrollo enfocada al entorno web. Es
muy útil, ya que proporciona una serie de herramientas para facilitar la creación de páginas, siguiendo
los principios DRY (Don’t Repeat Yourself; No Te Repitas) para evitar duplicidad en las líneas de código
e invertir el menor esfuerzo posible. Por ejemplo, levantar un panel de administración básico sólo
requiere un par de líneas de Python.
También se adscribe al diseño MVC (Modelo-Vista-Controlador), por lo que las diferentes partes del
sitio están claramente separadas. Por ejemplo, el código de acceso a los datos es completamente
independiente al que gobierna el aspecto externo de la página
INDICE
PREPARACIÓN PARA LA APLICACIÓN | CREACIÓN DE LA BASE DE DATOS | CREACIÓN DE
UNA APLICACIÓN | PÁGINAS WEBS DE INTERÉS
PREPARACIÓN PARA LA APLICACIÓN
Una vez tengamos nuestro FreeBSD instalado, procedemos a instalar los paquetes necesarios para poder
crear una aplicación web con Django.
Ejecutamos la siguiente linea para asegurarnos de que los paquetes que ya tenemos están actualizados:
pkg update && pkg upgrade -y
Como es la primera vez que utilizamos el comando “pkg” nos pedirá que instalemos la herramienta de
gestión de paquetes.
A continuación instalaremos los paquetes que usaremos de aquí en adelante:
page 1 / 13
Soluciones IT
pkg install bash ap24-mod_wsgi4 py27-virtualenv mysql56-server
Una vez se hayan instalado, cambiaremos la shell al Bash. Esto lo hacemos porque el comando
virtualenv, que usaremos más adelante, funciona mejor con esta shell. Para ello simplemente debemos de
introducir "bash".
El siguiente paso será crear un directorio donde guardaremos los archivos de nuestra aplicación web y
dirigirnos a este.
mkdir -p /www/data/AplicacionWeb
cd /www/data/AplicacionWeb
Ahora procedemos a crear el entorno virtual para Python y a activarlo:
virtualenv venv
source venv/bin/activate
Una vez hecho esto, nos aseguraremos de que las herramientas de Python están actualizadas e
instalaremos el conector entre MySQL y Python:
pip install -U setuptools pip
pip install django mysql-python
Por último añadiremos las siguientes lineas al archivo de configuración de FreeBSD (cuya ruta es
/etc/rc.conf):
mysql_enable="YES"
apache24_enable="YES"
Volver al principio de la página
CREACIÓN DE LA BASE DE DATOS
Arrancamos MySQL-Server:
page 2 / 13
Soluciones IT
service mysql-server start
Ahora ejecutamos el siguiente comando para establecer contraseña al usuario root en MySQL y demás
configuraciones:
mysql_secure_installation
Ejecutamos MySQL y creamos una base de datos que se llame “mysite”, por ejemplo, y luego creamos un
usuario para esa base de datos:
create database mysite;
grant all privileges on mysite.* to 'mysite'@'localhost'
identified by 'password';
Volver al principio de la página
CREACIÓN DE UNA APLICACIÓN
Como ejemplo, usaremos una aplicación que trate sobre un blog.
Es importante que estemos en el directorio /www/data/AplicacionWeb a la hora de ejecutar los siguientes
comandos.
Para empezar a crear la base de nuestro proyecto escribiremos lo siguiente:
django-admin.py startproject mysite .
Esto nos crea una carpeta con el nombre “mysite”, que contiene cuatro archivos .py que son la base de
nuestro proyecto, y además un archivo llamado “manage.py” que nos servirá para arrancar nuestra
aplicación y para crear las tablas de nuestros modelos en la base de datos.
Después crearemos la carpeta de nuestra aplicación ejecutando lo siguiente:
django-admin.py startapp blog
Esto ha creado otra carpeta llamada "blog" y otros archivos .py en su interior.
page 3 / 13
Soluciones IT
Ahora vamos a cambiar el archivo de configuración del proyecto. Se llama settings.py y está dentro de la
carpeta "mysite".
"""
Django settings for mysite project.
Generated by 'django-admin startproject' using Django 1.9.6.
For more information on this file, see
https://docs.djangoproject.com/en/1.9/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.9/ref/settings/
"""
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...
)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist
/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'v!mg@fm4fvs3gct-f(4do@(+o)%xgxj$g^+m)gyh_sgepp%ulr'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
page 4 / 13
Soluciones IT
'blog',
]
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'mysite.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'mysite.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite',
'USER': 'mysite',
'PASSWORD': 'password',
'HOST': '/tmp/mysql.sock',
}
page 5 / 13
Soluciones IT
}
# Password validation
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-va
lidators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME':
'django.contrib.auth.password_validation.UserAttributeSimilarityValida
tor',
},
{
'NAME':
'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/1.9/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_URL = '/static/'
page 6 / 13
Soluciones IT
Hemos añadido el nombre de la aplicación a "Installed Apps" y además hemos cambiado la sección de
"Database", donde hemos puesto que es MySQL, el nombre de nuestra base de datos, el usuario y la
contraseña.
Importante: Recuerda que tendrás que cambiar donde pone "password" y poner la contraseña que
estableciste para el usuario de la base de datos.
Ahora abriremos el archivo models.py, que se encuentra dentro de la carpeta "blog", y pondremos lo
siguiente:
from __future__ import unicode_literals
from django.db import models
from django.contrib import admin
# Create your models here.
class BlogPost(models.Model):
title=models.CharField(max_length=150)
body=models.TextField()
time=models.DateTimeField()
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title', 'body', 'time')
admin.site.register(BlogPost, BlogPostAdmin)
Este archivo es un modelo de Django, el cual es una descripción de los datos en la base de datos,
representada como código de Python. Además nos sirve para crear las tablas en nuestra base de datos, tal
y como vamos a ver a continuación.
Para que se cree en la base de datos lo que hemos puesto en el modelo, debemos de ejecutar las dos
siguientes lineas:
./manage.py makemigrations
./manage.py migrate
Recuerda que el archivo manage.py se encuentra en /www/data/AplicacionWeb.
Ahora que ya tenemos nuestra tabla creada en la base de datos, vamos a proceder a entrar en el panel de
administración de nuestra aplicación.
page 7 / 13
Soluciones IT
Para ello tenemos que crear un superusario ejecutando lo siguiente:
./manage.py createsuperuser
Una vez que lo hayamos creado, arrancamos la aplicación con la siguiente linea:
./manage.py runserver 192.168.56.101:8000
Donde pone "192.168.56.101", tendrás que poner tu ip de la tarjeta host-only.
Ahora abrimos un navegador, iremos a http://192.168.56.101:8000/admin y loguearemos con el usuario
que hemos creado antes.
Una vez logueado nos saldrá una pantalla así:
Como puedes observar, dentro de Blog, está la tabla Blog posts que se ha creado a través el archivo
models.py.
El siguiente paso es darle a "add" y añadiremos dos o tres posts con lo que queramos. Estos se añadirán
automáticamente en la base de datos cuando los guardemos.
Una vez hecho esto último vamos a proceder a añadirle una vista a nuestra aplicación. Para ello vamos a
crear dos carpetas dentro de la carpeta "blog": templates y static.
Dentro de la carpeta "templates" crearemos un archivo HTML que se llamará archive.html y contendrá lo
siguiente:
{% load staticfiles %}
<html>
<head>
<title>Mi Blog en Django</title>
page 8 / 13
Soluciones IT
<link rel="stylesheet" href=
"//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href=
"//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css
">
<link rel="stylesheet" href="{% static 'css/blog.css' %}">
<link href=
"http://fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext
" rel="stylesheet" type="text/css">
</head>
<body>
<div class="page-header">
<h1><a href="/">Mi blog</a></h1>
</div>
<div class="content container">
<div class="row">
<div class="col-md-8">
{% for post in posts %}
<div class="post">
<div class="date">
{{ post.time }}
</div>
<h1><a href="">{{ post.title }}</a></h1>
<p>{{ post.body }}</p>
</div>
{% endfor %}
</div>
</div>
</div>
</body>
</html>
Y dentro de la carpeta "static" crearemos otra carpeta llamada "css" donde crearemos un archivo llamado
blog.css, cuyo contenido será el siguiente:
h1 a {
color: #FCA205;
font-family: 'Lobster';
}
.page-header {
background-color: #ff9400;
margin-top: 0;
padding: 20px 20px 20px 40px;
page 9 / 13
Soluciones IT
}
.page-header h1, .page-header h1 a, .page-header h1 a:visited, .page-h
eader h1 a:active {
color: #ffffff;
font-size: 36pt;
text-decoration: none;
}
.content {
margin-left: 40px;
}
h1, h2, h3, h4 {
font-family: 'Lobster', cursive;
}
.date {
float: right;
color: #828282;
}
.save {
float: right;
}
.post-form textarea, .post-form input {
width: 100%;
}
.top-menu, .top-menu:hover, .top-menu:visited {
color: #ffffff;
float: right;
font-size: 26pt;
margin-right: 20px;
}
.post {
margin-bottom: 70px;
}
.post h1 a, .post h1 a:visited {
color: #000000;
}
Ahora que ya tenemos el HTML y el CSS para mostrar los blogs, vamos a modificar los archivos
page 10 / 13
Soluciones IT
necesarios.
Primero modificaremos el archivo views.py de la carpeta "blog":
from
from
from
from
django.shortcuts import render
django.http import HttpResponse
django.template import loader, Context
blog.models import BlogPost
# Create your views here.
def archive(request):
posts = BlogPost.objects.all()
mi_template = loader.get_template("archive.html")
context = {'posts':posts,}
return HttpResponse(mi_template.render(context, request))
Luego editaremos el archivo urls.py de la carpeta "mysite":
"""mysite URL Configuration
The `urlpatterns` list routes URLs to views. For more information plea
se see:
https://docs.djangoproject.com/en/1.9/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='hom
e')
Including another URLconf
1. Import the include() function: from django.conf.urls import url
, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import *
from django.contrib import admin
urlpatterns = [
url(r'^$', include('blog.urls')),
page 11 / 13
Soluciones IT
url(r'^mysite/blog', include('blog.urls')),
url(r'^admin/', admin.site.urls),
]
Y por último crearemos un archivo llamado urls.py en la carpeta "blog" que contendrá lo siguiente:
from django.conf.urls import *
from blog.views import archive
urlpatterns = [
url(r'^$', archive),
]
Ahora ya solo nos queda ejecutar nuestra aplicación:
./manage.py runserver 192.168.56.101:8000
¡Y este es el resultado de nuestro blog hecho con Django!
Volver al principio de la página
PÁGINAS WEBS DE INTERÉS
Aquí encontrarás algunas paginas webs que me han servido de ayuda y que contienen mucha información
acerca de Django.
Página oficial de Django
LibrosWeb
page 12 / 13
Soluciones IT
Código Facilito
Volver al principio de la página
<span style="color: #333333;"><span style="font-family: monospace,mono
space;"><span style="font-size: 10pt;">mysql_enable="YES"</span></span
></span>
<span style="color: #333333;"><span style="font-family: monospace,mono
space;"><span style="font-size: 10pt;">apache24_enable="YES"</span></s
pan></span>
<span style="border: none; line-height: 0.58cm; margin-right: 0.74cm;
orphans: 1; padding: 0cm;"><span style="color: #333333;"><span style="
font-family: monospace,monospace;"><span style="font-size: 10pt;">Ahor
a ejecutamos el siguiente comando para establecer contraseña al usuari
o root en mysql y demás configuraciones:</span></span></span></span>
page 13 / 13
Powered by TCPDF (www.tcpdf.org)
Descargar