Aprendizaje de documentos de Django 4.0 (1)

Esta serie de artículos se basa en la documentación del sitio web oficial de la versión 4.0 de Django, aprendiendo
usando herramientas de desarrollo para pycharm.

> python -m django --version
4.0

Escribe tu primera aplicación Django, Parte 1

crear proyecto

Ejecutar en la ventana de terminal de pycharm

django-admin startproject mysite

inserte la descripción de la imagen aquí
Los siguientes archivos se generarán en el directorio de trabajo del proyecto actual
inserte la descripción de la imagen aquí

  • El mysite/directorio raíz más externo es solo el contenedor del proyecto, y el nombre del directorio raíz no tiene efecto en Django, y se puede cambiar el nombre a cualquier nombre.
  • manage.py: una herramienta de línea de comandos que le permite administrar proyectos de Django de varias maneras.
  • El directorio de un nivel dentro mysite/contiene su proyecto, que es un paquete de python puro.
  • mysite/__init__.py: un archivo vacío que le dice a Python que este directorio debe considerarse un paquete de Python.
  • mysite/settings.py: El archivo de configuración para el proyecto django.
  • mysite/urls.py: La declaración de URL del proyecto django, al igual que el directorio de su sitio web.
  • mysite/asgi.py: sirve como punto de entrada para su proyecto que se ejecuta en un servidor web compatible con ASGI.
  • mysite/wsgi.py: como punto de entrada para su proyecto que se ejecuta en un servidor web compatible con WSGI.

Servidor simple para desarrollo.

Asegúrese de que su proyecto Django se haya creado realmente con éxito.
Vaya al directorio mysite/ más externo y ejecute:

> cd .\mysite\ 
> python manage.py runserver

Ver el siguiente resultado indica que el proyecto Django se creó con éxito, ctrl+c finaliza la operación y
inserte la descripción de la imagen aquí
se abre el navegador http://127.0.0.1:8000/
inserte la descripción de la imagen aquí
De forma predeterminada, el comando runserver configurará el servidor para escuchar en el puerto 8000 de la IP interna de la máquina.
Si se requieren cambios, ejecute

python manage.py runserver 8080

Vuelva a ejecutar y python manage.py runserververá que el enlace cambia ahttp://127.0.0.1:8080/

crear aplicación

Django viene con una herramienta que puede ayudarte a generar la estructura básica de directorios de la aplicación.
El nombre de la aplicación es arbitrario.

> python manage.py startapp polls

inserte la descripción de la imagen aquí

escribir la primera vista

encuestas/vistas.py

from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello,world.You're at the polls index.")

Esta es la vista más simple en Django. Para ver el efecto, necesitamos asignarle una URL, por eso necesitamos URLconf.

Para crear una URLconf, se debe crear un nuevo archivo urls.py en el directorio de encuestas.
encuestas/urls.py

from django.urls import path
from . import views
urlpatterns=[
    path('',views.index,name='index'),
]

El siguiente paso es especificar el módulo polls.urls que creamos en el archivo raíz URLconf. Inserte un include() en la lista de patrones de URL del archivo mysite/urls.py.
misitio/urls.py

from django.contrib import admin
from django.urls import include,path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

Verifica que esté funcionando

python manage.py runserver
http://127.0.0.1:8000/polls

inserte la descripción de la imagen aquí

Escribe tu primera aplicación Django, Parte 2

mysite/settings.py alguna configuración

#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans'#中文

#TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'#中国时区

configuración de la base de datos

mysite/settings.py
La configuración predeterminada de Django de la base de datos sqlite3
'db.sqlite3'almacenará el archivo de la base de datos en el directorio raíz del proyecto.
inserte la descripción de la imagen aquí

DATABASES = {
    
    
    'default': {
    
    
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

Si configura la base de datos MySQL, primero debe ingresar a la interfaz de línea de comando MySQL para construir una base de datos para el proyecto, como:

create database xxx数据库名;
DATABASES = {
    
    
    'default': {
    
    
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xxx数据库名',
        'USER': '用户名',
        'PASSWORD': '密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

crear modelo

El primer paso para escribir una aplicación web basada en una base de datos en Django es definir el modelo, es decir, el diseño del esquema de la base de datos y otros metadatos adjuntos.
El tutorial del sitio web oficial para crear una aplicación de encuestas es una aplicación de votación que crea dos modelos: Pregunta y Elección. El modelo de pregunta incluye una descripción de la pregunta y cuándo se publicó. El modelo Choice tiene dos campos, la descripción de la opción y el número actual de votos. Cada opción pertenece a una pregunta.
encuestas/modelos.py

from django.db import models
class Question(models.Model):
    question_text = models.CharField(max_length=200)#CharField字符字段
    pub_date=models.DateTimeField('date published')#DateTimeField日期时间字段
class Choice(models.Model):
    question=models.ForeignKey(Question,on_delete=models.CASCADE)
    choice_text=models.CharField(max_length=200)
    votes=models.IntegerField(default=0)

modelo de activación

Primero, tenemos que instalar la aplicación de encuestas en nuestro proyecto y agregarla a la lista
mysite/settings.py INSTALLED_APPS
'polls.apps.PollsConfig'

> python manage.py makemigrations polls

Migrations for 'polls':
  polls\migrations\0001_initial.py
    - Create model Question
    - Create model Choice

Al ejecutar el comando makemigrations, Django detectará sus cambios en los archivos del modelo y almacenará los cambios como una migración.
Las migraciones son la forma en que Django almacena los cambios en las definiciones del modelo (es decir, la estructura de su base de datos). Se almacena en polls/migrations/0001_initial.py.
inserte la descripción de la imagen aquí
Vea qué sentencias SQL ejecutará el comando de migración. El comando sqlmigrate acepta un nombre de migración y devuelve el SQL correspondiente:

> python manage.py sqlmigrate polls 0001

inserte la descripción de la imagen aquí
Ejecute el comando de migración para crear una tabla de datos para el modelo recién definido en la base de datos:

> python manage.py migrate

La migración es una característica muy poderosa que le permite cambiar continuamente la estructura de la base de datos durante el desarrollo sin tener que eliminar y crear tablas nuevamente. Cambiar el modelo requiere estos tres pasos:

  • Edite el archivo models.py y cambie el modelo.
  • Ejecute python manage.py makemigrations para generar archivos de migración para cambios de modelo.
  • Ejecute python manage.py migrate para aplicar migraciones de bases de datos.

API de prueba inicial

Abra la línea de comando de Python

python manage.py shell

Pruebe la API de la base de datos

>>> from polls.models import Choice,Question
>>> Question.objects.all()
<QuerySet []>
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
>>> q.save()
>>> q.id
1
>>> q.question_text
"What's new?"
>>> q.pub_date
datetime.datetime(2023, 3, 17, 7, 30, 17, 75596, tzinfo=datetime.timezone.utc)
>>> q.question_text="What's up?"
>>> q.save()
>>> Question.objects.all()                                             
<QuerySet [<Question: Question object (1)>]>

<Question: Question object (1)>No nos ayuda a entender los detalles de este objeto. Solucione esto editando el código para el modelo de pregunta (ubicado en polls/models.py ). Agregue el método str () a Pregunta y Elección. Es muy importante agregar el método str
() al modelo , que no solo brinda comodidad para su uso en la línea de comando, sino que también usa este método para representar objetos en el administrador generado automáticamente por Django. Luego agregue un método personalizado a este modelo: polls/models.py

import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
    question_text = models.CharField(max_length=200)#CharField字符字段
    pub_date=models.DateTimeField('date published')#DateTimeField日期时间字段
    def __str__(self):
        return self.question_text
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
    question=models.ForeignKey(Question,on_delete=models.CASCADE)
    choice_text=models.CharField(max_length=200)
    votes=models.IntegerField(default=0)
    def __str__(self):
        return self.choice_text

quit()Salga de la línea de comando. Abra de nuevo la línea de comandos interactivos de Python con python manage.py shellel comando .

>>> from polls.models import Choice,Question
>>> Question.objects.all()
<QuerySet [<Question: What's up?>]>
>>> Question.objects.filter(id=1)  
<QuerySet [<Question: What's up?>]>
>>> Question.objects.filter(question_text__startswith='What')
<QuerySet [<Question: What's up?>]>
>>> from django.utils import timezone
>>> current_year=timezone.now().year                          
>>> Question.objects.get(pub_date__year=current_year)
<Question: What's up?>
>>> Question.objects.get(pk=1)
<Question: What's up?>
>>> q=Question.objects.get(pk=1)
>>> q.was_published_recently()
True
>>> q.choice_set.all()
<QuerySet []>
>>> q.choice_set.create(choice_text='Not much', votes=0)
<Choice: Not much>
>>> q.choice_set.create(choice_text='The sky', votes=0)
<Choice: The sky>
>>> c = q.choice_set.create(choice_text='Just hacking again', votes=0)
>>> c.question
<Question: What's up?>
>>> q.choice_set.all()
<QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
>
>>> q.choice_set.count()
3
>>> Choice.objects.filter(question__pub_date__year=current_year)
<QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
>
>>> c = q.choice_set.filter(choice_text__startswith='Just hacking')
>>> c.delete()
(1, {
    
    'polls.Choice': 1})

quit() Salir.

Presentamos la página de administración de Django

Crear una python manage.py createsuperuser
contraseña de cuenta de administrador Escribí admin

> python manage.py createsuperuser
用户名 (leave blank to use 'dell'): admin
电子邮件地址: admin@example.com
Password: 
Password (again):
密码跟 用户名 太相似了。
密码长度太短。密码必须包含至少 8 个字符。
这个密码太常见了。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

Inicie el servidor de desarrollo python manage.py runserver
, inicie http://127.0.0.1:8000/admin
inserte la descripción de la imagen aquí
sesión y agregue polls/admin.py
inserte la descripción de la imagen aquí
a la página de administración

from django.contrib import admin
from .models import Question
admin.site.register(Question)

Actualice la página
inserte la descripción de la imagen aquí
para experimentar la función de administración conveniente
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
y ver el historial de modificaciones
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_46322367/article/details/129618100
Recomendado
Clasificación