Para esta tarea instalaremos el framework Django, y pasaremos el código y los templatess de las tareas anteriores para que funcionen en Django
Seguiremos los pasos de este tutorial
$ pip install django
$ django-admin startproject sitio_web
$ cd sitio_web
$ python manage.py runserver
$ python manage.py startapp restaurantes
y los apuntamos en el archivo$ mkdir templates
$ mkdir static
sitio_web/settings.py
TEMPLATES = [
{
'DIRS':[os.path.join(BASE_DIR, 'templates')]
...
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'restaurantes',
)
$ python manage.py migrate
Esto habrá que hacerlo cada vez que hagamos cambios en la BD SQL
$ python manage.py createsuperuser
http://localhost:8000/admin
8000 es el puerto por defecto, se puede lanzar desde otro puerto:
$ python manage.py runserver 0.0.0.0:5000
Y podemos ahora hacer una aplicación siguiendo los pasos desde el Step 3: Your first view del tutorial, pero usando la base de datos de mongo, y las templates de las tareas anteriores:
Solo tendremos que cambiar, el enrutador (ahora en dos archivos aparte):
# sitio_web/urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^restaurantes/', include('restaurantes.urls')),
url(r'^admin/', include(admin.site.urls)),
]
y en un nuevo archivo donde especificamos las rutas que comiencen por restaurantes/
# restaurantes/urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^test/$', views.test, name='test'),
]
El código lo pondremos en el archivo views.py
# views.py
from django.shortcuts import render, HttpResponse
# Create your views here.
def index(request):
return HttpResponse('Hello World!')
def test(request):
context = {} # Aquí van la las variables para la plantilla
return render(request,'test.html', context)
Django utiliza una libreria de templates, muy parecida al Jinja2 de flask, solo cambian las instrucciones para cargar los archivos estaticos y los nombres de los enlaces
{% load static %}
...
<link href="{% static 'css/style.css' %}" rel="stylesheet" media="screen">
...
<a href="{% url 'name para la url' %}"> </a>
y en restaurantes/models.py
, incluimos el esquema de mongoengine, como en
Listing 17 de Using MongoDB with Django
Algo como:
# views.py
# ----------
from django.shortcuts import render
from .models import restaurants
def listar(requests):
context = {
"resta": restaurants.objectcs[:5], # los cinco primeros
}
return render (requests, 'restaurantes/listar.html', context)
Poner a funcionar una pantalla de entrada de datos y otra de consulta
En django-marcador hay un tutorial completo (ojo, usa python2.7 y django 1.8)