Django
Django
la solucion es
1. Start Windows PowerShell with the "Run as Administrator" option. Only members of
the Administrators group on the computer can change the execution policy.
instalar django
python -m pip install django
instalar psycopg
python -m pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org
--trusted-host pypi.python.org psycopg2
Creando un proyecto¶
django-admin startproject mysite
El servidor de desarrollo¶
python manage.py runserver
def index(request):
polls/urls.py¶
from django.urls import path
urlpatterns = [
path('', views.index, name='index'),
mysite/urls.py¶
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
You have now wired an index view into the URLconf. Verify it’s working with the following
command:
http://localhost:8000/polls/
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
}
}
...
Creando modelos¶
polls/models.py¶
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Para incluir la aplicación en nuestro proyecto necesitamos agregar una referencia a su clase de
configuración en la configuración INSTALLED_APPS. La clase PollsConfig está en el archivo
polls/apps.py por lo que su ruta punteada es 'polls.apps.PollsConfig'.
mysite/settings.py¶
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
Al ejecutar makemigrations, usted le indica a Django que ha realizado algunos cambios a sus
modelos (en este caso, ha realizado cambios nuevos) y que le gustaría que los guarde como una
migración.
A continuación, ejecute de nuevo el comando migrate para crear esas tablas modelos en su
base de datos:
polls/models.py¶
class Question(models.Model):
# ...
def __str__(self):
return self.question_text
class Choice(models.Model):
# ...
def __str__(self):
return self.choice_text
polls/admin.py¶
admin.site.register(Question)
Empleo de inspectdb
La utilidad inspectdb realiza una introspección de la base de datos a la que apunta tu
archivo de configuración, determina una representación del modelo que usará
Django para cada una de tus tablas, e imprime el código Python del modelo a la
salida estándar.
Esta es una guía de un proceso típico de integración con una base de datos
existente desde cero. Las únicas suposiciones son que Django esta instalado y
tienes una base de datos existente.
1. Cada tabla de la base de datos es convertida en una clase del modelo (es decir,
hay un mapeo de uno-a-uno entre las tablas de la base de datos y las clases del
modelo). Esto significa que tendrás que refactorizar los modelos para tablas con
relaciones muchos-a-muchos en objetos ManyToManyField.
2. Cada modelo generado tiene un atributo para cada campo, incluyendo campos de
clave primaria id. Sin embargo, recuerda que Django agrega automáticamente un
campo de clave primaria id si un modelo no tiene una clave primaria. Por lo tanto,
querrás remover cualquier línea que se parezca a ésta:
id = models.IntegerField(primary_key=True)
No solo estas líneas son redundantes, sino que pueden causar problemas si tu
aplicación agregara nuevos registros a estas tablas. El comando inspectdb no puede
detectar si un campo es autoincrementado, así que está en tí cambiar esto a
AutoField, si es necesario.
Por ejemplo, si una tabla tiene una columna INT llamada for, el modelo generado
tendrá un campo como este:
for_field = models.IntegerField(db_column='for')
5. Si tu base de datos contiene tablas que hacen referencia a otras tablas (como la
mayoría de las bases de datos lo hacen), tal vez tengas que re-acomodar el orden de
los modelos generados, de manera que los modelos que hacen referencia a otros
modelos estén ordenados apropiadamente. Por ejemplo, si un modelo Book tiene una
ForeignKey al modelo Author, el modelo Author debe ser definido antes del modelo
Book. Si necesitas crear una relación en un modelo que todavía no esta definido,
puedes usar el nombre del modelo, en vez del objeto modelo en sí.
7. La detección de claves foráneas sólo funciona con PostgreSQL y con ciertos tipos
de tablas MySQL. En otros casos, los campos de clave foránea serán generados
como campos IntegerField, asumiendo que la columna de clave foránea fue una
columna INT.
Mapear una base de datos MySQL
Crear el proyecto
Parametros de conexion a la BD
editar institute/institute/settings
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
}
}
django a español
LANGUAGE_CODE = 'es'
cd institute/
NOTA: puede ser que agregue espacio o caracteres al principio del archivo models.py, lo
que provoca un error al momento de correr el makemigrations o el migrate
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core.apps.CoreConfig',
]
core/admin.py
admin.site.register(Users)
● Creating a view
● Creating the template which use to the view
● Adding a path to urls.py
La aplicación auth de Django proporciona vistas para iniciar y cerrar sesión. Agregar
esto a nuestro proyecto será un proceso de dos pasos:
app_name = 'user'
urlpatterns = [
path(‘’, include(urls)),
]