Eraser, un divertido error avanzado de Internet. La nueva serie, entremos juntos al mundo de Django.
Artículo terminado
- Bola de nieve aprendiendo Python tercera ronda, el mundo de Django en Python Web
- Con un pequeño apretón de manos, puede usar Python Django para implementar un sistema de microblog
- Django es un backend pequeño, los detalles se están perfeccionando un poco, como una bola de nieve para aprender la tercera etapa de Python
- Django QuerySet solo aprende un poco, un poco es suficiente
Bola de nieve Aprende Python Ronda 3
Cinco, vista de Python Django
5.1 La vista devuelve datos JSON
En el trabajo real, los ingenieros web de Python enviarán comentarios de los datos de la interfaz a los ingenieros de front-end. La interfaz generalmente se llama API. El formato común de los datos devueltos es XML o JSON. A continuación, tomaré los datos en formato JSON más comunes como ejemplo para Explíquele en detalle cómo envía Django datos desde la base de datos al primer plano.
Modifica el views.py
archivo.
from django.shortcuts import render
# 导入 JSON 格式数据响应类
from django.http import JsonResponse
from .models import Blog
# Create your views here.
def blog_list(request):
blogs = Blog.objects.all()
# 用列表生成器生成一个对象
context = {
"data": [{
"id": blog.id, "title": blog.title} for blog in blogs]
}
return JsonResponse(context)
En el archivo de encabezado de importación models
en Blog
la clase, luego agregando una nueva blog_list
función que devuelve JsonResponse
el objeto.
5.2 Crear una ruta
Los materiales relacionados con el enrutamiento se complementarán en el futuro. Este blog solo necesita saber cómo devolver diferentes datos a través de diferentes URL.
Cree un nuevo archivo en la carpeta del blog urls.py
, el contenido del código es el siguiente:
from django.urls import path
import blog.views as blog_views
urlpatterns = [
path('list/', blog_views.blog_list)
]
Se completa el código de escritura del archivo, también es necesario modificar my_website
la carpeta en urls.py
el archivo, modificando lo siguiente:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls')),
path('admin/', admin.site.urls),
]
En este punto, la estructura del archivo de su proyecto como se muestra a continuación, es importante tener en cuenta que urls.py
el archivo aparece dos veces.
Ejecute la aplicación actual con el siguiente comando:
python manage.py runserver
El acceso directo http://127.0.0.1:8000/
saldrá del siguiente error, que requiere acceso a un directorio. Ingrese el http://127.0.0.1:8000/admin
acceso antes de que el fondo del blog involucre la entrada http://127.0.0.1:8000/blog/list/
para obtener los datos en formato JSON.
Los datos en formato JSON son los siguientes: el chino ha sido codificado en UNICODE y
también se puede consultar directamente a través de las herramientas de desarrollo, simplemente haga clic en el área rectangular azul en la figura siguiente.
Una vez completada la solicitud, puede continuar con el aprendizaje de repetición.
Accedido a través de la dirección URL, si se accede a la dirección /blog
, se cargará automáticamente la urls.py
configuración de Django , es decir, los siguientes códigos:
urlpatterns = [
path('blog/', include('blog.urls')),
path('admin/', admin.site.urls),
]
La coincidencia se encuentra en la url blog/
, luego carga blog.urls
el archivo, el archivo correspondiente al código es el siguiente:
from django.urls import path
import blog.views as blog_views
urlpatterns = [
path('list/', blog_views.blog_list)
]
Esto contiene un list/
comparador, por lo que se blog/list/
llama a la blog_view.blog_list
función de vista , que se usa para devolver datos con formato JSON. Tenga en blog_view
cuenta que el view
cambio de nombre de los módulos importados viene, el código en el encabezado import blog.views as blog_views
.
def blog_list(request):
blogs = Blog.objects.all()
# 用列表生成器生成一个对象
context = {
"data": [{
"id": blog.id, "title": blog.title} for blog in blogs]
}
return JsonResponse(context)
Primero comprenda la relación lógica y luego complemente la definición gramatical profesional.
5.3 Página de detalles ampliados
Con la lógica anterior, después de lograr un retorno a los datos del blog de una sola interfaz, primero edite el views.py
archivo.
def detail(request, blog_id):
blog = Blog.objects.get(id=blog_id)
blog = {
"id": blog.id,
"title": blog.title,
"content": blog.content,
"create_time": blog.create_time
}
return JsonResponse(blog)
Página de detalles extendida, encontró un error de ortografía, modifique create_time
después, preste atención al siguiente comando sqlite
para regenerar ser.
> python manage.py makemigrations blog
Did you rename blog.creatr_time to blog.create_time (a DateField)? [y/N] y
Migrations for 'blog':
blog\migrations\0002_auto_20210329_0940.py
- Rename field creatr_time on blog to create_time
Una vez finalizado el comando, ejecute el siguiente comando:
>python manage.py migrate blog
Operations to perform:
Apply all migrations: blog
Running migrations:
Applying blog.0002_auto_20210329_0940... OK
Continúe modificando el archivo de la blog
carpeta urls.py
, el código es el siguiente:
from django.urls import path
import blog.views as blog_views
urlpatterns = [
path('list/', blog_views.blog_list),
path('detail/<int:blog_id>', blog_views.detail)
]
Después de completar la preparación del código anterior, puede http://127.0.0.1:8000/blog/detail/1
ser una adquisición de datos de un solo blog, formato de dirección URL http://127.0.0.1:8000/blog/detail/{整数序号}
.
Número entero en la dirección, se puede blog_id
adquirir el fondo , pero se blog_id
pasará al detail
método.
El código en el que existe una necesidad especial para explicar <int:blog_id>
lo anterior int
se denomina convertidor de ruta, el convertidor de ruta común tiene lo siguiente:
str
: Coincide con cualquier cadena no vacía, el valor predeterminado;int
: Coincide con cero o entero positivo;uuid
: Coincide con un tipo específico de formato de cadena;path
: Coincide con cualquier carácter que no esté vacío, puede hacer coincidir la dirección de la ruta, incluida/
.
Los siguientes blogs cubrirán el contenido anterior y lo aplicarán primero. Después de todo, la serie de bolas de nieve es una columna de aprendizaje repetido.
5.4 Implementación de paginación
A continuación, continúe con el blog_list
método para expandir, deje que implemente la operación de paginación. Concéntrese en views.py
los blog_list(request)
métodos para transformar la referencia del código central al siguiente contenido.
from django.shortcuts import render
# 导入 JSON 格式数据响应类
from django.http import JsonResponse
# 导入分页组件
from django.core.paginator import Paginator
from .models import Blog
# Create your views here.
def blog_list(request):
# blogs = Blog.objects.all()
# # 用列表生成器生成一个对象
# context = {
# "data": [{"id": blog.id, "title": blog.title} for blog in blogs]
# }
# 页码默认获取 page 参数,默认值为 1
page = request.GET.get("page", 1)
# 默认每页 20 条数据
page_size = request.GET.get("page_size", 20)
# 获取全部数据
blog_all = Blog.objects.all()
# 分页对象
paginator = Paginator(blog_all, page_size)
# 当前页码
current_page = paginator.get_page(page)
blogs = current_page.object_list
context = {
"blog_list": [{
"id": blog.id, "title": blog.title} for blog in blogs],
"paginator": {
"total_count": paginator.count,
"num_pages": paginator.num_pages,
"page_size": paginator.per_page,
"page_number": current_page.number
}
}
return JsonResponse(context)
Introducida en la parte superior de los from django.core.paginator import Paginator
medios de paginación de código para paginar los datos de contenido subsiguientes mediante el Blog.objects.all()
método de adquisición por adelantado, la presente sección modificará la eficiencia de la realización, avanzada al contenido de aprendizaje subsiguiente.
Después de escribir, el efecto de paginación se puede realizar a través de parámetros relacionados con la URL. El http://127.0.0.1:8000/blog/list/?page=1&page_size=1
efecto resultante de acceso es el siguiente:
5.5 Resumen de este blog
Este blog se centra en el aprendizaje de vistas en Django. Este artículo se basa en vistas basadas en funciones (FBV). En blogs futuros, aprenderemos sobre vistas basadas en clases (CBV). Las vistas basadas en clases se utilizan ampliamente en el desarrollo real. también son marcos maduros para usar Django para desarrollar API, por ejemplo Django Rest Framework
.
Lectura relacionada
- 100 tutoriales sobre rastreadores de Python, excelentes tutoriales sobre rastreadores, suscríbase ahora
- Python game world (actualizado, el número objetivo de artículos es 50+, suscríbase ahora, todos son viejos fanáticos)
- Lección sobre rastreo de Python, 9 lecciones maravillosas
Django WeChat applet mall Django tutorial 2020 PHP es tan genial Django y spring comparan proyectos de código abierto de Django Por qué las grandes empresas rara vez usan el marco Django de vue python Django cómo instalar Django desarrollo empresarial combat pdfHoy es el 122º / 200º día de la escritura continua .
Si desea construir un blogger de relación estrecha, puede centrarse en el número público del borrador de sueños del mismo nombre , contacto cercano con un divertido gusano de Internet senior.
ID de Blogger: Dream Eraser, espero que a todos les guste , comente y marque como favorito .