[Notas] Django Django inicio rápido Sección 4: Formularios y vistas genéricas

[Notas] Django Django inicio rápido Sección 4: Formularios y vistas genéricas 

 

Notas sobre los documentos oficiales y blog de tecnología , información clave extracto, y las notas de registro, ver las rutinas de documentación oficial.

Documento oficial completa: Django Documentación 

Blog recomendado: Django2.2 Tutorial

 

Django Introducción documento oficial: Parte 4: Los formularios y las vistas genéricas

 

directorio

1. Formulario Formulario

2. Vista general de: reducir la duplicación de código


1. Formulario Formulario

 

Para el archivo de plantilla, señala :

  • forma de etiqueta en, la acción es la URL de destino que desea enviar, método representa la presentación de los datos, normalmente enviar y obtener. Cuando es necesario cambiar la forma de crear un conjunto de datos del lado del servidor, utilice el método = "post"
  • forloop.counter Indicando  for etiqueta ha ciclado muchas veces . forloop.counter es un sistema de plantillas de Django variables especialmente previsto para indicar el número de su ciclo actual, el ciclo se utiliza generalmente para añadir elementos ordenados escala logarítmica.
  • Cuando se crea un formulario de envío (que tiene el efecto de la modificación de datos), tiene que ser a través del sitio de cuidado falsificación solicitud, se hace referencia a CSRF. Django tiene una defensa a su sistema muy fácil de usar. En resumen, toda la dirección URL interna de la forma de POST debe utilizar  etiquetas de plantilla{% csrf_token %}  . (Nombre de la etiqueta no se puede cambiar, de formato fijo, en cualquier posición, siempre y cuando el formulario está en la forma. Este método es conveniente formulario de presentación Haoshi en la forma de la forma, pero si es la presentación de los datos usando ajax manera, entonces no utilice este método tiene.)

 

datos de formulario enviado se procesa en la vista, ver los puntos :

  • request.POST Es un diccionario-como objeto que permite el acceso al nombre de la clave de datos presentado. Por ejemplo  request.POST['choice'] en una cadena de retorno selección de ID de elección. Nota:  request.POST El valor es siempre una cadena.

  • Django también en la misma forma establecida  request.GET para acceder a datos GET.

  • Si  request.POST['choice'] no proporciona los datos  choice , la POST conducir a una  KeyError . PS: Por lo general, nos dan un valor predeterminado, para evitar que esa excepción, por ejemplo request.POST[’choice’,None], una Ninguno resuelve todos los problemas.

  •  HttpResponseRedirect Recepción de un solo parámetro : el usuario será redirigido a la URL de . Nota: Después de procesar con éxito de los datos POST, se debe mantener un buen hábito, siempre devuelve un HttpResponseRedirect. Tales como:

     return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
  •  reverse() Función. Esta función nos evita URL modificable en función de la vista. Nos obliga a dar  el nombre de la vista que desea saltar  y patrón de URL correspondiente a la vista de la necesidad de proporcionar una visión de los parámetros ( datos que se pasan ) . (Por ejemplo: después de código de redirección anteriormente en la polls:resultsvista correspondiente , y question.idpasarlo a los términos vernáculos, es lanzar, además, una vista en vivo correspondiente a la ruta para llegar allí ..)

 

 

2. Vista general de: reducir la duplicación de código

 El desarrollo web es una situación común:

  1. Obtener datos de la base de datos de acuerdo a los parámetros de la URL,
  2. Cargar el archivo de plantilla,
  3. Sólo tiene que utilizar los datos para hacer una plantilla, vuelva a esta plantilla.

Debido a esta situación es particularmente común, Django provee un acceso directo, llamado el " vistas genéricas del sistema".

 

El código original en lugar de utilizar un modo de vista común , que hay que hacer para completar la conversión de los siguientes pasos:

  1. La conversión de la URLconf .
  2. Borre parte de la vieja visión ya no es necesaria.
  3. La nueva vista se introduce sobre la base de una visión común de Django .

(Nota: En el desarrollo debe comenzar a determinar si el uso de puntos de vista genérico, en lugar de a mitad de camino reconstituidas)

 

Necesitará importar las vistas genéricas:

de django.views importar genéricos

 

Vista general :( ya que se heredan de la clase padre)

 ListView : Significa "muestra una lista de objetos." ListView vista genérica utiliza una plantilla llamada por defecto del atributo se utiliza para especificar el nombre de la plantilla.<app name>/<model name>_list.htmltemplate_name

 

 DetailView : Es sinónimo de "página de detalles de un tipo particular de objeto". Por defecto, la DetailViewopinión general es que se refiere al uso de una <app name>/<model name>_detail.htmlplantilla (por ejemplo: encuestas / detail.html ). template_nameAtributo se utiliza para especificar el nombre de la plantilla en lugar del nombre de la plantilla por defecto se genera de forma automática.

class DetailView(generic.DetailView):
    model = Question
    template_name = 'polls/detail.html'
  • Cada vista genérica necesita saber cuál es el modelo que va a actuar. Esto se realiza  model proporcionando propiedad.
  • DetailView Captura de llamada esperar de una URL  "pk" valor de la clave primaria. (Así, por ejemplo, la opinión general de  question_id cambio  pk).

 

vista de clase es un uso más avanzado de Django, hay una primera impresión. Más información detallada sobre las vistas genéricas, ver las  vistas genéricas de documentos  .

 

 

Publicado 50 artículos originales · ganado elogios 10 · vistas 6596

Supongo que te gusta

Origin blog.csdn.net/qq_23996069/article/details/104719762
Recomendado
Clasificación