Construindo ótimos backends da Web com Django (Python) | Sid Azad | Skillshare

Velocidade de reprodução


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Construindo ótimos backends da Web com Django (Python)

teacher avatar Sid Azad, Founder at VisionHatch Technologies

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

13 aulas (2 h 49 min)
    • 1. Introdução de curso e roteiro

      1:31
    • 2. Noções básicas de Django

      12:22
    • 3. Como criar um aplicativo Hello Notes - Parte 1

      13:06
    • 4. Como criar um aplicativo Hello Notes - Parte 2

      14:56
    • 5. Modelos e formulários

      15:29
    • 6. Como criar um formulário de login para o aplicativo de notas

      18:59
    • 7. Usando o ORM do Django e criar modelos

      15:41
    • 8. Autenticação de usuário do Django

      11:42
    • 9. Como gerar formulários e salvar dados via ModelForms

      14:29
    • 10. Introdução aos ModelFormSets

      4:54
    • 11. Como atualizar e excluir objetos por meio de ModelFormSets

      12:55
    • 12. APIs REST no Django via TastyPie

      13:39
    • 13. Django na produção, cache, dimensionamento e outros tópicos

      19:30
  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

1.577

Estudantes

19

Projetos

Sobre este curso

O que um site assassino, um aplicativo para smartphone incrível e um plugin futurista para o Google Glass têm em comum?

Um fim de trás

Sem um back-end tudo o que você está esquerdo é um esqueleto vazio de uma IU. Entre outras coisas, um back-end vamos você:

  • Armazenar dados em um banco de dados
  • Executar tarefas intensivas de CPU (como reconhecimento de rosto)
  • Fornecer uma API consistente para ler e gravar dados

Django é um framework web baseado em Python que fornece uma grande quantidade de encanamento para criar um back-end para que você não precise fazê-lo. Isso permitirá que você se concentre na construção de recursos cada vez melhores no seu aplicativo sem se preocupar com infraestrutura e encanamento.

Por que este curso?

Esse é um curso baseado em projeto e vai adotar uma abordagem prática para aprender Django. No final do curso, você vai se sentir confortável com o seguinte:

  • Como configurar e instalar o Django
  • Interface com bancos de dados usando modelos de Django
  • Como escrever modelos básicos de Django
  • Como escrever formulários de Django
  • Como combinar o acima em um aplicativo django

O projeto final vai escrever um aplicativo de Notas Pessoais. Este aplicativo vai expor você a muitos padrões básicos que serão aplicáveis a uma grande variedade de aplicativos do Django.

Embora este seja um curso de iniciante, eu planejo apresentar alguns conceitos de Django avançados na teoria para dar a você uma ideia do poder da estrutura do Django.

Isso também vai prepará-lo para entrevistas de trabalho que possam fazer perguntas relacionadas ao Django.

Por que Django?

  • Python - Precisa de eu dizer mais? Se você ama Python, vai adorar Django
  • Comunidade - Django é apoiado por uma comunidade excelente e solidária. Existem vários encontros e uma conferência de Django realizada todos os anos
  • Filosofia - O Django é construído em torno dos princípios de design de acoplamento solto, DRY, Menos Code, desenvolvimento rápido e explícito é melhor do que implícito. Para saber mais sobre isso, confira Filosofia de Design do Django

Quem deve cursar este curso

Qualquer pessoa que queira começar a desenvolver web e Django bem como dar uma olhada nos recursos mais avançados podem levar este curso. Aqui estão algumas categorias que eu possa pensar:

  • Você adora Python e quer desenvolver aplicativos da Web enquanto usa tanto Python quanto você puder

  • Você está tentando aprender Django sozinho, mas prefira acelerar o processo de aprendizado

  • Você não sabe muito sobre desenvolvimento da web, mas gostaria de começar bem com Django

  • Você já está praticando desenvolvimento de web, mas gostaria de aprender a usar uma estrutura legal como o Django para se desenvolver mais rapidamente

  • Você quer aprender uma nova habilidade para se comercializar melhor para competir por um trabalho que você gostaria de ter

Seja em uma das categorias acima mencionadas ou não, encorajo você a se inscrever neste curso. Não deixe que a falta de experiência com Python ou estruturas da Web o desencorajem. O curso não requer muita experiência com Python ou estruturas da Web - um desejo de aprender vai ser muito mais longo!

Conheça seu professor

Teacher Profile Image

Sid Azad

Founder at VisionHatch Technologies

Professor

I am passionate about technology and enjoy programming in many different platforms and languages. Currently I lead a web development team on a Django and AngularJS stack. I have been developing software, managing software teams and mentoring and teaching software for several years now.

AngularJS is a revolutionary new way of developing single page apps. With my practical experience in AngularJS and related technologies I am at a unique place to teach this course. Especially because I have developed web apps with and without Angular and can compare with examples and explain what makes Angular not only important but the future of web app development.

Visualizar o perfil completo

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%
Arquivo de avaliações

Em outubro de 2018, atualizamos nosso sistema de avaliações para melhorar a forma como coletamos feedback. Abaixo estão as avaliações escritas antes dessa atualização.

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui cursos curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução de curso e roteiro: - Oi. - Bem-vindo ao Edifício Great acena com Jangle. Meu nome é cidadão fora, e serei instrutivo para este curso. - Eu só quero levar isso, - gostaria de falar um pouco sobre o que você pode esperar por vir neste curso. A primeira palestra tratará principalmente de discutir uma terminologia comum baseada na Web, para que possamos começar a falar a mesma língua. E eu vou dar uma pequena introdução ao jangle como uma visão de 10.000 níveis para que você possa aprender sobre o poder e o que o banco pode fazer por você. E eu vou dar uma pequena introdução ao jangle como uma visão de 10.000 níveis para que você possa aprender A partir desse ponto, nossas eleições tomarão a forma de tela de gravação, e você pode ligar comigo. - Ou você pode olhar para o tribunal e obter o repositório foi. Estamos disponibilizando isso lá? - Nosso principal produto para as pontuações é um aplicativo Notas. - A razão pela qual eu escolhi as notas é porque ele cobre uma variedade de padrões simples que são - aplicáveis em uma variedade de aplicativos que você pode construir usando o Django, - por exemplo, - log-in logout, - salvar um recurso para um banco de dados que, no nosso caso, - é uma nota recuperando da navegação do banco de dados. - Uma lista de recursos sexuais é excluí-los e editá-los. - Como você pode imaginar. - Estes são alguns dos padrões comuns que são obrigados um monte de aplicativos, - especialmente em aplicativos baseados em repouso, - qualquer aplicativo baseado em repouso que provavelmente será consumido por vários dispositivos, tais como - dispositivos móveis e laptops. Então, estou muito animado para ensinar este curso e novamente dou-vos as boas-vindas, e estou ansioso para construir notas muito poderosas juntos na aprendizagem de jangles e estou ansioso para construir notas muito poderosas juntos na aprendizagem de jangles. 2. Noções básicas de Django: - nesta seção, - vamos falar sobre alguns aspectos centrais do jangle e também começar a construir o nosso primeiro Notre, - para o qual você vai precisar por Tone e Jacqueline roubou suas máquinas. Então, se ainda não o fez, sugiro que os instale primeiro e depois ouça mais esta palestra. - Como muitas das primárias, - Jiang Yu também é projetado em torno de um monte de filosofias que os criadores de Junk Django - escolheram para dirigi-lo para. - Alguns deles são basicamente filosofias que podem se aplicar a qualquer tipo de software. - Por exemplo, - acoplamento solto ser capaz de escrever menos co dois Express mais. - Ser capaz de desenvolver rapidamente a unidade Principle Express. É melhor do que implícito, que é um dos meus favoritos pessoais, que significa que Jangle evita fazer muitas coisas sob o capô que pareciam mágicas, mas acredita explicitamente afirmar algo que está fazendo e consistência off - comportamento, bem como ser capaz de escrever, - sofrem de uma maneira consistente. - Os criadores de Jangle tornaram muito fácil para os desenvolvedores a seguir o não repita - você mesmo princípio, fornecendo atalhos e pequenos trechos de tribunal, - que você pode usar repetidamente em muitos cenários diferentes, - em vez do que ter que escrever um monte de tribunal novamente. - Produtos e Apsara, - Muito central, - Um conceito importante de jangle. Quando você cria um primeiro aplicativo no Jangle, você está criando um projeto que é um guarda-chuva que estará segurando um monte de abdominais. Então, a maneira de pensar sobre um APP é uma unidade de funcionalidade, uma unidade independente de funcionalidade que pode ser provável em projetos de raio. - Vários sites em vários cenários. É uma unidade independente, reutilizável reutilizávele independente de funcionalidade. Para dar um exemplo, estamos construindo notas. - Mas se estivéssemos construindo mais do que o aplicativo de notas, se você está construindo um aplicativo de notas para doapp depois de gerenciar projetos e, digamos um antigo aplicativo Olsen para gerenciar listas de mercearias domésticas. - Se sua esposa quer que você pegue um supermercado ou algo assim agora uma lista de anotações para fazer lista. - É o nosso algo que poderia ser aplicável em um cenário familiar próximo, bem como um - cenário de aplicativo de gerenciamento de projetos. - Então jangle permite que você crie um aplicativo de forma reutilizável para que você possa fazer anotações. - Use-o em um projeto que é para gerenciamento de projetos e, em seguida, carregue-o quando você está - construindo suas compras também. - E o projeto é apenas um guarda-chuva que contém um monte de armadilhas. - Então isso é projetos ausentes. - Agora, - como você cria um jangle aplicativo? - Você usa o comando chamado Django admin que foi fornecido para jangle, - e vamos achar que este comando é muito útil. - Então você diz django admin dot b y start project no nome do seu projeto e isso irá - criar um projeto para você, - mas também criar um aplicativo subjacente para você dentro do projeto. - Este é o seu padrão. - Este é o aplicativo que Jangle fará o primeiro contato com Quando você é uma lésbica cabeça do pé, - entre em contato com o servidor Web. - Então vamos ver uma demonstração disso muito em breve. - E como se faz um jangle? - Há duas maneiras distintas de executar um geral Um é o desenvolvimento mais e um é - a produção mais no modo de produção, - você pode executar jangle com vários servidores Web. - A maneira mais popular de executar o Django é dentro de um grupo de observadores com um uísque - integração nele. - Whiskey também, - Wells pronuncia arriscado, - mas é conhecido como ws g. - I. - É o servidor Web Gateway Inter Freeze, - e é um protocolo que ajuda a integrar certos tipos de software em uma Web servidor. - E isso é um jangle usado para ser capaz de falar com um servidor web. - Então, o Django é integrado em um servidor Web de partido usando um módulo de corpo chamado March - Sublinhado. - Wst I Nós não vamos nos preocupar muito com isso para nossos propósitos foi que vamos estar usando um - servidor incorporado, - que é fornecido com 10 jangled. - E isso é chamado de Servidor de Desenvolvimento de Jangle. - E isso é o que usaremos para construir as notas boas. - Não é muito difícil apenas pegar o APP Development Server e derramá-lo como ele - é para e para um servidor de correção. - Claro, - você teria toe fazer certas configurações e instalar mais sublinhado ws g I ou - basicamente para integrar pendurando seu partido. - Este é um tópico que vou abordar até o final do curso no último par de palestras e ir - sobre que tipos de problemas você pode enfrentar em ter um servidor de produção, - que você não vai enfrentar com um servidor de desenvolvimento, - porque em um servidor de produção, - você estará realmente tendo clientes, - e você tem que pensar em escala. E se centenas de milhares de clientes atingirem seu gênio? - Como você escala? - Então o próximo tópico é o processamento de solicitações de jangle, - e eu vou olhar para como os processos jangle e uma solicitações íngremes em um muito básico Então por diante - o alto nível, - como você pode ver o diagrama na tela o pedido para ver por jangle e o ponto de entrada - o Euros não está arquivado? Bem, - na verdade, - esse não é o ponto de entrada que, - mas para nós parece que esse é o ponto de entrada quando estamos escrevendo software para Jangle. - Então, há uma briga no arquivo. - Você está na parada que contém mapas de certos Urais. - Certa luta em funções chamadas funções de visualização. - Quando Jangle recebe um pedido, - ele procura neste arquivo de euros para o APP e tenta combinar que você é que tem bean - usado no navegador ou no dispositivo móvel pelo usuário e tenta encontrar o correspondente - vista e chamadas a visão que o pedido que foi recebido a partir do dispositivo móvel ou - navegador do cego e Uma vez que a vista recebe pedido, - cabe a você quanto ao que? - Você está bem na vista. - E você pode processar este pedido. - Faça alguma coisa com ele. Você pode salvar algo no banco de dados, ou pode retirar algo do banco de dados. - Você pode fazer um monte de operações nele, - por exemplo, - para um reconhecimento facial que você pode estar executando um software de reconhecimento facial no usuário - entrada que você recebeu uma imagem ou imagem e seu software de reconhecimento facial pode ser - chamando um monte de outros módulos. - Mas a vista é o ponto de entrada para o pedido. - Então você processa um pedido e, em seguida, você cria uma resposta http e você enviá-lo de volta. - Então esta é uma forma simplista de ver como o Jangle processa pedidos. - Mas vamos olhar para um diagrama que tem feijão colocado no site do projeto jangle e que vai - nos dar ah vista em uma maneira muito mais profunda de olhar para como processamento de processo jangle - solicitações. - Então eu vou para este diagrama, - que também é o site do Projeto Presidente Jangle e eu estava ligado a isso na minha apresentação - - Então você vê esses vários níveis fora do meio onde o middleware comum sessão middleware - middleware são um software valioso que pode ser conectado ao jangle, - e você pode escrever seu próprio middleware também. - E o que isso geralmente faz é interceptar em solicitações de entrada e, em seguida, passá-lo para a função - view. - E depois uma interceptação. - A saída responde e, em seguida, envia-o de volta para o navegador. - Então, quando o pedido entra no Django, - ele passa por vários níveis de middleware. - Agora, - alguns destes inverno, - onde já são fornecidos para você por jangle. - Por exemplo, - middleware de sessão. - O Middleware CSR Middleware, - que é o Middleware de solicitação cross-site, - que ajuda a evitar falsificações de solicitação de olhos cruzados. - O middleware de autenticação, - que é usado para Loggins e logouts. - Então há vários meios foram fornecidos, - e você pode olhar para esses middleware em um arquivo chamado Setting Soppy Wife, - que vamos olhar muito em breve. - Então, inicialmente, - quando jangle emite uma solicitação http, - ele vai passar pelo middleware pré-definido do arquivo de configurações e, em seguida, - se você tiver escrito seu próprio metal onde o pedido também será interceptado por aqueles - metal onde esses middleware provavelmente fazer algum tipo de processamento inteligente no - request, - eles também podem modificar o pedido de alguma forma eles podem criar uma sessão e de repente - solicitação e também um banco de dados de obsessão e eventualmente o seu pedido atingiu sua função de visualização -. - A visão é a função que o usuário, - que é que você estará escrevendo para aplicação. - A visão conterá toda a lógica de negócios para o aplicativo, - e você processaria sua solicitação lá e, em seguida, você enviará de volta uma resposta. - Agora, - quando a resposta sair da vista, - vai voltar a ser na ordem inversa. - Acerte o meio onde o bean está configurado no jangle. - Então, - por exemplo, - neste exemplo, - com a solicitação http entra, - ele atinge o comum usará primeiro, - então o middleware da sessão, - então CSR se o novo autenticação e middleware de mensagem e, em seguida, ele vem para a vista - função enquanto quando as respostas vão para trás, - ele vai para ir da função de visualização para a mensagem Middle, - onde a sessão CSR middleware de autenticação e, em seguida, o comum middleware. - Então está na ordem inversa quando as respostas de juros são enviadas de volta. - Também temos coisas chamadas “View Decorators” emaranhado. - Um exemplo de um decorador é no bloqueio de olhos e sublinhado necessário, - que é um decorador simples. - Mas um muito útil, - e é um batedor muito comum que você não quer que os usuários sejam capazes de ver uma página - sem fazer login. - Então, seu site pode ser dividido em páginas que estão bem para ser olhado pelo usuário - sem fazer login, - por exemplo, - sua página de destino. - Embora existam páginas, - por exemplo, - o painel de usuários que eles não devem ser capazes de entrar antes de fazer login. - E não faz sentido ter um painel de usuário com como o uso de não ter assim se você - colocar o log e decorador necessário em cima de sua luta na função de visualização que irá - garantir que nenhum usuário pode entrar nessa visão sem ter logado. - Então é ah, - é alguma funcionalidade que tem feijão pré-definido por mordida em, - classificar por jangle e fornecido a você, - e isso está em linha com o Não repita seu algum princípio que nós falamos sobre um - pouco antes. - Há outro conceito chamado modelos. - Em geral, - modelos são semelhantes a uma lança Jsp páginas se você já lidou com eles antes. - Se você não fez, - modelos estão realmente gerando. - HTM Oh, - da vista prateada. - Então você escreve em HTM e arquivo e você tem algum HTM de acordo com ele. Mas você também pode ter uma luta no tribunal embutido em um modelo que será processado no lado do servidor, e ele pode gerar dinamicamente mais humanos do Leste para você, você poderia ter construções como quatro loops. - Se mais e l declaração em seus modelos, - por que não começamos a construir nosso primeiro aplicativo? - Aqui está a parte excitante, certo? - Então o que eu vou fazer é abrir uma concha em um pequeno sistema. - Você pode fazer isso fazendo controle todo o chá e em um sistema oh windows. - Você pode abrir uma janela de comando. Ou você pode simplesmente abrir seu editor se você não quiser abrir seu shell. - Então o que eu vou fazer é criar um projeto primeiro. Então, nesta classe de jangle de diretório, eu vou executar o comando Jangle Admin produto Scott em um nome de projeto. - Vou chamar meu projeto ab doce AP P S U i t. - Então vamos executar este comando e ver o que acontece. - Veja, - há um diretamente ab doce que está presente agora, - que não estava lá antes - Então deixe-me ver o absoluto em absoluto e ver o que temos aqui. - Eu vejo um arquivo chamado Managed A P Y e A durante o absoluto em conserva So Jangle Airman criado - Project for Me chamado ab Sweet, - e dentro do projeto ele criou um aplicativo também chamado Absolute. - Então vamos para o AP absoluto e ver como isso se parece neste ponto em dois níveis - para baixo no reboque. - Corte absoluto. Absolutamente. Quando eu faço um Ellis, há alguns cinco que são gerados aqui. - Vamos ver esses arquivos um por um. - Há uma configuração no seu arquivo I, - que é um arquivo muito importante porque ele contém suas configurações para todo o projeto jangle - - Aqui é onde você vai se tornar figurando seus bancos de dados. Há um euro no seu arquivo, sobre o qual falamos, que contém os mapas de euros a abusos. - E finalmente, - há um arquivo chamado Visitado por que define como o jangle se integra com o servidor Web incorporado ou qualquer outro servidor Web, - como um corpo 3. Como criar um aplicativo Hello Notes - Parte 1: Oi. Nosso objetivo para a palestra de hoje é construir um pequeno aplicativo, que é o início das anotações. Vamos chamar isso de “Olá Notes”. O objetivo deste aplicativo é simplesmente retornar uma string chamada Hello Notes do Django para voltar ao navegador do usuário. Embora possamos simplesmente retornar a funda a partir de uma visão geral como uma corda £5, estaremos usando o sistema de template ing jangle para retornar a força. Agora, antes de começar de acordo, eu quero cobrir mais alguns conceitos básicos para pouco o que um aplicativo jangle é e também a anatomia fora de nossas notas até apenas ter uma visão em mente sobre o que eventualmente queremos chegar. Então queremos construir um aplicativo que quando o usuário vai para primeiro ou navega no dedo do pé, o usuário vai ver uma tela que terá uma opção para fazer login. O usuário só pode fazer login se o usuário já estiver registrado no sistema. Então, se eu inserir um nome de usuário e senha na tela e eu tive drogas, se eu ainda não estou me cadastrando, o sistema vai me registrar. Assim que um usuário estiver conectado ao sistema, ele poderá ver um painel de usuário. Este painel lhe dará a opção de adicionar uma nota que também mostraremos todos os seus conhecimentos existentes para que você possa procurar suas notas. Você pode clicar sobre eles e olhar para eles. Você pode editar suas notas e salvá-los de volta, bem como você pode levar suas notas e, finalmente realmente construir interface de prisão para as notas para cima. Usaremos um Sófocles testemunhado para construir o resto. API, eu testemunho, é um dos Softwares populares para, por tempo, construir um descanso. Avia, na verdade para Jangle e estamos cobrindo isso neste curso também, que significa que você vai ter que instalar o depoimento em algum momento. Mas não precisa se preocupar com isso agora. Vamos falar brevemente sobre o que são modelos emaranhados. Jangle templates são arquivos com uma extensão HTML, mas estes não são arquivos humanos mais puros. Incluir HTML e decorar JavaScript. Eles se parecem com arquivos a vapor, exceto que eles poderiam ter incorporado marcação e Ben e marcar. É que fora do sistema de despejo jangle, que é uma linguagem fornecida pelo jangle para tornar mais fácil escrever tribunal que seria executado no lado do servidor e gerar mais HTML. Se você escrever um arquivo HTML, que é um modelo jangle, todo o conteúdo desse arquivo será gerado no lado do servidor. O HTML estático Cada direito neste arquivo não precisa ser gerado porque ele já é HTML. Mas se você usar construções como quatro loops, ou se instruções neste arquivo, eles serão avaliados no lado do servidor antes de comer o navegador, e eles resultarão em gerar mais STM dinamicamente, com base em alguns dados que podem ser fornecidos a esses modelos a partir de suas visualizações jangle, isso é muito importante lembrar, mesmo do ponto de vista da Corning. Quando você está escrevendo call in templates, você deve se lembrar que isso está sendo avaliado no servidor. Ele não está atingindo o lado do cliente, mesmo que estes se pareçam com arquivos HTML. E, finalmente, modelos jangle são extensíveis, que significa que você não está limitado aos recursos de linguagem de modelo jangle ing como para loops e se instruções ou quaisquer funções fornecidas dentro do sistema de preenchimento geral, você pode estender escrevendo sua própria mordida em módulos e conectando-os ao sistema de têmpera de jangle , o que o torna um sistema realmente poderoso de usar. Seguindo em frente, Vamos olhar para a estrutura de Jenga. O que eu quero tentar fazer aqui é descrever como seria um ideal durante a reestruturação para um jangle. Então vamos olhar para o diretório de nível superior, que é um projeto diretamente. Agora, este é o diretamente para o projeto jangle. Dentro disso, teremos vários laboratórios. Então é você um sobre abdominais é o diretório Abdi Abdi IR. Então, dentro de Abdi iria mentir todos os arquivos pertencentes a este aplicativo. Agora lembre-se que queremos fazer um aplicativo, um componente autônomo e reutilizável que pode ser conectado a projetos jangle separados, se necessário. Então, por essa razão, vamos empacotar tudo o que pertence a uma soneca neste diretório. O primeiro arquivo aqui é o sublinhado sublinhado nele, Entendido sublinhou um p Y, que é uma luta no arquivo que indica lutar em que este é um módulo. Este é um arquivo vazio, mas ele precisa estar lá. O segundo arquivo é um arquivo de euros. Não este arquivo é uma abside europhile, o que significa que ele só iria conter os euros que são replicados esta aplicação particular . Em seguida, ele é de usado até o seu arquivo, que irá conter o volume fora da sua lógica de negócios. O euro detê-lo-á. Disparei a função de ligação dentro da vista. Pare o seu arquivo. Em seguida, há um modelos icais diretos, que conterá todos os modelos que pertenciam a esta aplicação. O próximo diretório extático por convenção enfraquecer. Estou nomeando esse diretório de estático, mas você poderia nomeá-lo de outra coisa. Então, embora eu recomendo que você nomeie estática porque essa é a convenção, muitos programadores do Django seguem, e seu código será fácil de ler para eles também. A estática contém diretamente todos os arquivos estáticos necessários para o seu aplicativo. Por exemplo, seus arquivos CSS ou arquivos JavaScript qualquer uma de suas imagens, talvez documentos ou planilhas excel ou qualquer outra coisa que você pode querer vincular a partir de seu aplicativo, que não seria modificado e apenas ser enviado de volta de um jangle de volta para o navegador Então meus arquivos estáticos diretamente tem mais diretórios dentro dele. Um dos diretores de Js para JavaScript você poderia nomear o estritamente JavaScript também. Não importa o que você chama. Js de Jalisco seriam nomes intuitivos para ele. Depois há as imagens diretamente para imagens, e elas não estão para nos ver. Nós. Recursos muito poderosos do Django é o membro da relação de objeto que fornece uma relação de objeto , mapeador ou tudo. Nosso M é uma ferramenta que permite mapear por classes telefônicas para tabelas de banco de dados relacionais. O que isso significa é que você pode escrever bicicleta em classes que mapeiam para uma tabela de banco de dados, e isso torna muito fácil para você recuperar ou salvar dados quando você primeiro dados de uma tabela de banco de dados através de um ou no reboque. Mas ele já foi preenchido em instâncias fora da classe que está mapeando para a tabela de banco de dados . Aprenderemos muito mais sobre isso nas próximas palestras, mas por enquanto, a razão pela qual estou mencionando isso são os modelos de arquivos que B Y é por convenção. O arquivo dentro de você AB que irá conter sua bicicleta em classes que mapeamos para suas tabelas de banco de dados. Então agora podemos começar a chamar as notas. Então eu tenho aqui aberto no editor de texto mate e você pode usar qualquer editor. É melhor se o seu editor suporta por tempo, porque você será capaz de ver a inundação e talvez algumas cores agradáveis para morder em variáveis. Eu também uso o Eclipse da minha máquina de limites ou minha máquina Windows. Mas mensagens de texto funciona bom o suficiente para mim no Mac, então vamos apenas passar brevemente pelas configurações disquete por arquivo no diretório absoluto barra absoluta . Então, só para garantir que seu arquivo direito abrir meu pote atual é absoluta barra AP suite, o que significa que eu estou na aplicação ab doce diretamente, não o projeto diretamente, e eu tenho as configurações acima arquivo Pessoas aberto aqui. Então, como podem ver, esta é uma luta em arquivo. Nós apenas listamos uma série de luta em variáveis, e essas configurações se aplicariam a todo o seu projeto, que significa que essas configurações serão aplicáveis a cada aplicativo que você colocar sob este projeto guarda-chuva. Absoluto. Eu iria brevemente passar por algumas das variáveis que são especificadas neste arquivo, mas não através de todas elas, já que vamos estar freqüentemente voltando para este vil e passando por diferentes variáveis conforme precisamos delas. Então online Número três. Eu vejo debug é igual a true, o que significa simplesmente que o Django está sendo executado no modo de depuração e ele se arrepende de algumas outras instruções. E também não será enviar e-mails em caso de exceções para quem foi especificado como administrador. Você pode especificar que o administrador está no restolho de administrador. Número Online 6 Número on-line 12 é o Dicionário Base de Dados, que contém uma lista de bancos de dados. O primeiro banco de dados Mr está listado aqui é padrão. O padrão cubano mapeia para outro dicionário, e este dicionário tem um número de palavras-chave como nome do mecanismo, nome de usuário, passaporte, host e porta. Os feridos são as costas e que vamos usar como nosso banco de dados. No nosso caso , será sequela como três. O nome no caso de Sequelae Tree é o arquivo. A sequela levemente mapeia para, no caso fora de outro banco de dados de relação, como minha sequela ou Oracle é o nome real do próprio banco de dados. No caso de alguns bits, como minha sequela Oracle ou DB dois, você teria a senha do usuário e host especificados, mas você não precisa deles para secretamente três como sequelas. Árvore é um banco de dados simples que vai simplesmente trabalhar através de um arquivo simples listado aqui no nome de Klaus. Você pode especificar o fuso horário para Fight On para Django Online 32. No outono, é a América cortar Chicago. Mas há um link da Wikipédia, que pode lhe dar várias vezes para que você possa personalizá-lo com base em onde você está localizado. Sobre o seu site será localizado. O uso que eu queria e variável direta é resolvido através, o que significa internacionalização é habilitado para John Jangle agora. Mas você consentiu em quedas. Se você tem certeza de que seu lado não será executado internacionalmente e não precisa desse suporte, uma vez que isso fará alguma otimização que pode fazer seu pequeno site funcionar um pouco mais rápido. Aqui está uma diretriz. Classes de middleware. Este é um par fora diferentes módulos middleware que estão conectados ao jangle, e você pode definitivamente escrever outro módulo middleware e você pode inserir em qualquer local , que você julgar adequado para o seu pouco. A rota Ural Khan é ah é uma variável muito importante. Ele especifica o arquivo que seria o primeiro, seu arquivo antigo que Jang irá acertar quando ele recebe uma solicitação. Neste caso, é absoluto. Não euros a razão de que isso é necessário. Vamos supor que temos aplicações absolutas e notas. E ambos os aplicativos têm seus próprios arquivos que como dangle decide com euros arquivados para invocar Jack? Você pode decidir que, com base neste diretor, neste caso, Jiang vai procurar o arquivo absoluto Não euros e no arquivo de euros para um único para um aplicativo, você pode facilmente incluir seus próprios arquivos para outros aplicações. Então, no nosso caso, a partir de absolutos ou euros, estaremos incluindo murais sem parar para redirecionar notas de tango que euro. Portanto, é uma boa ideia pensar em como você vai projetar seus antigos porque isso dá uma sensação intuitiva ao seu site e torna muito mais fácil para um usuário navegar no site. Então vamos pensar em como os euros para o nosso projeto e nossas anotações devem ser projetados. Então, já que eu estaria executando os desenvolvimentos do jangle, havia. Meu Euro vai iniciar um veículo da cidade em barra barra anfitrião local. Agora o servidor de Desenvolvimento Chacal pode ser executado em qualquer porto, então deixe-me escolher a porta 8000. Você pode escolher outra porta, se quiser. Então, um povo da cidade e cortar últimos locais Colon 8000. Não, eu tenho que descobrir o que minha urina para o índice de notas PHP. Então, desde que eu estou usando um aplicativo específico chamado notas meu Ural, seria útil para os meus países Euro notas. Então talvez ele deve ser o host local Colin 800 barra nó índice barra, porque isso é intuitivo para mim. Está me dizendo que estou navegando até as notas ou algo chamado notas, e estou procurando a página de índice nele. O que significa que, digamos, se tivermos outro aplicativo chamado para fazer o espaço de índice para o meu fazer volta deve ser host local. Coordenar milhares barra dois barra índice. Espero que isso pareça intuitivo para você. Então deixa-me ver isto. Você é um host local para 20.000 barra norte índice e eu recebo uma página de erro, e a razão para isso é que eu não estou executando o servidor Web agora, e mesmo se eu estivesse executando o servidor Web, eu não encontraria esta Europa porque este que você está mapeando não existe. Então, na próxima parte do vídeo Em uma continuação fora fazendo o aplicativo Olá notas, vamos ver como fazer isso. Você está retornando a resposta que esperamos, que é anotações Olá. 4. Como criar um aplicativo Hello Notes - Parte 2: - a última vez que decidimos que usaremos o host local Ural Colony 1000 barra nó - barra índice para chegar ao inferno da página de notas. - Então vamos ver o que acontece quando você começa esta Europa Bem crescido me dá um erro que ele - não pode se conectar ao Jose 1000 local e a razão para isso é que nós ainda não estamos usados são - usando ou executando nossos representantes embarcados A jangle sobre. - Então vamos começar que ele é abrir uma janela shell e ir para o diretório do projeto, - não para o diretório AB. - Então, atualmente não estou logado no meu diretório absoluto. - Se eu fizer, Ellison é diretamente. - Eu vejo que o script gerenciou um B Y. - Este é um estado que Jangle usa para um monte de companheiros úteis. - Volume, - que é Run server, - que é usado para executar o servidor de desenvolvimento jangle incorporado. - Então essa batalha começou. Tenho de ir ao Home Man é não ser mulher frentes e o quarto número, que é 8000 apresentadores. - Isso é o que você deveria ver. - Faz a versão do jangle. - Está correndo, e funciona. - Suas configurações acham que ele está usando absolutamente não configurações, - então vamos voltar para o cromo e ver o que acontece agora. - Isto é o que me dá um antes Paige, - escreveu. E isso é o que você deveria ver é que neste momento, se você não vê isso, há algo errado com eles. - Mas acabou. - Não está configurado corretamente ou não está em execução. - Você não iria querer ver o seu show e ver se há algum editor lá. - Então isso é ótimo. - Mas esta página não é muito interessante. - O que você quer ver são notas de olá, - Mas a razão pela qual estamos recebendo uma página padrão, - é porque por padrão Tchenguiz configurado para enviar esta página. - Se não houver outro Euros Peter Configure, - precisamos configurar a nota do euro, - barra índice e dieta para uma vista, - e esta vista vai nos enviar a página de notas do Hello. - Então vamos ver como podemos fazer isso. - Não, - já que todos os euros para a aplicação de notas vão começar com notas, - ele deve ficar figurado um nível abaixo. - Para fazer isso, - vamos para o nosso aplicativo padrão, - que é absoluto. - Se você se lembra, esta foi a única coisa que foi recebida pelo Comando do Projeto Iniciar. - Este tem um arquivo chamado Euro Stop ey, então indo para ab sweet slash absolute slash euro stop -, - ey, - abra em algum editor de texto de sua escolha. Então isto é o que se eu parecesse que tem um objeto chamado Batters Neurais, que é uma instância da classe de padrões Os padrões último construtor provam o primeiro argumento, que é flanqueado por padrão. - E eu diria para não se preocupar com isso agora. - É apenas um argumento de conveniência para passar um prefixo. - Não escreva nomes de pacotes redundantes em euros, mas podemos rever isso. - Então vamos configurar o primeiro euro aqui. - Para fazer isso, - Eu vou adicionar uma entrada aqui, - que é uma instância de sua classe você é o primeiro argumento desta entrada é uma expressão regular , - então meus euros estão começando com notas, - então Isso é o que eu preciso colocar aqui. Então, o que esta expressão diz é qualquer você, Earl que começa com notas barra. O segundo argumento é um diretor de inclusão, então dentro de incluir, eu vou colocar o nome do arquivo que eu quero incluir, que irá conter a barra de notas caindo do euro neste caso, são tudo o que você está sempre vou descobrir as minhas anotações. - Então eu vou dizer, - incluir notas de euros. - Sem começo. O seu ainda não existe, mas vamos escrever o seu próprio. Olhando para trás para esta linha, o que estamos dizendo é que qualquer Ural que comece com notas corte deve ser redirecionado para esse outro incêndio. - Não, - começar Buehrle's vamos escrever anotações cortar o seu de pessoas que eu conheço. Então criei um novo arquivo dentro das anotações. Vou chamá-lo de seu próprio material só por conveniência. - Eu não seria o mesmo euro parar você arquivo de absoluta e baseado ele. Agora, é claro, o que precisamos aqui não é barra, mas o que se segue ao “North Slash “, nós apenas indexamos. - Então o que estou dizendo é que você é o índice de ações. - Deve haver uma certa ação. - Mas agora não queremos incluir nada. - O que você quer fazer é que nós queremos especificar uma luta em vista de qual isso você é. - Você será redirecionado. - Pense no que está acontecendo aqui. - Quando você tinha cólon cavalo local, - cerca de 8000 barra nó índice barra, - Django puxa os absolutos como você também é arquivo do FBI ele olha para as notas do parque do - euro. Parece que precisa redirecionar o dedo que você está no dedo do pé do pedido, não cortar o saquê de Yala. Porque, já que há um inclusivo associativo, mas as notas cortam agora, que já são processadas separadamente notas do euro, se trata de indexar. E uma vez que incluímos este ficheiro, , não há cortes nos urais. - Você está certo. - Ele olha para o que deve ser o que deve acontecer com o com qualquer euro começando com o índice. - Então ele olha para o índice e faz o que especificado aqui, - que é índice. - Então passei três argumentos aqui. - O 1º 1 é a bateria Euro. - O 2º 1 é o nome da minha função de visão que ainda não existe e o 3º 1 é um nome - que é um pseudónimo que dei a esta entrada Ural. Vamos ver o que acontece quando atingimos o euro. - O sultão chamado notas não está definido. - E o editor está vindo deste arquivo ab doce barra ab doces como você também é p y linha - número 17. - Então esta é uma boa saída de depuração que você está olhando e a razão que você é capaz de ver - isso é porque Jang estava em execução no modo de desenvolvimento em e ele tem depuração igual em seus arquivos - configurações. - Na verdade, - mesmo que você não esteja executando mais no desenvolvimento, - se você estiver executando com um partido e uísque, - você ainda verá essa saída, desde que você está debug está definido como proprietário, - Então isso é bastante útil . - Nós vamos para isso, arquivar um arquivo nesta linha e investigar o que está acontecendo aqui. - Então, na minha barra absoluta, - Charles não ser arquivado. - Oh, - então diz Notas, - não está definido porque ele não sabe o que notas está aqui. - Isso é porque nenhum começo da Europa precisa estar em portos únicos, - por isso leva no nome do arquivo para ser incluído como uma luta na corda. - Vamos ver o que acontece agora se você dizer o seu não é uma letra diferente, - diz o nome índices notificando. - Então isso é porque o índice de símbolos não está definido, - que precisa ser uma função de visualização. - Então vamos abusar ponto por dentro de notas e definir nossa primeira visão de você como eu mencionei - antes é simplesmente uma parte em função. Então D de morte é o que você usa para definir funções de ícones? - Então ele está no Death Index. - O primeiro argumento para indexar é um pedido e o que vamos simplesmente fazer a partir daqui. - É uma resposta HDTV? - Objete e vamos chamá-lo, digamos respostas. - Olá, notas. - Agora, - antes de eu fazer isso ou executar isso, - eu preciso incluir o módulo de resposta http aqui porque ou a classe? - Porque Jangle ainda não sabe o que isso é subjacente incluído ou importante. Então o que eu vou dizer é que de uma resposta de importação de pacotes CTV HDTV, eles devem ser bons o suficiente. - Vamos ver o que acontece se batermos de novo. - Recebo índices de nomes notificando. - Isso é porque, - você sabe, - barra euro parar por não sabe de onde o índice de símbolos está vindo. - Então o que podemos fazer é dizer a partir de notas, - início de visualizações, - índice de importação. - Eles devem consertá-lo refrescante. - Lá vai você. - Olá, Notas. - Então esta é a sua primeira saída a partir de sua visão, - mas queríamos enviar sua cabeça de saída de notas de um modelo jangle e não apenas a sua - moto em força. - Então vamos ver como podemos fazer isso para voltar a usar-te. - Por que não temos modelos que existem agora. - Nós vamos criar um no diretório Notes no aplicativo Norte, - criar uma nova chamada diretamente temperança dentro dos modelos de barra norte diretamente. - Vamos criar um novo arquivo e chamá-lo de histórias de índice Demo e vamos abrir este arquivo. - A próxima reunião é por defeito. Ponha alguma saída no meu arquivo do Stephen, mas não é disso que preciso. - Então todos nós mesmo este arquivo html é Olá, - notas sobre Apenas para fazer um pouco maior local vai usar um histórico de cabeçalho e vamos chamá-lo - sem notas agora, - embora Everton tentou, - Eu realmente não estou retornando o da minha função de visualização. - Então é isso que preciso fazer. - Legal. - Então, em vez de enviar este http responde com notas Olá, - vamos enviá-lo de volta. - Somos modelos para fazer isso. - Vou me basear nessas três linhas e me deixar passar por cima delas uma por uma. - O 1º 1 é modelo igual a carregador. - Não obter modelo indexado, - Oresteia Lei Ordem é o modelo em por contagem que senhores modelos. - Então estamos dizendo carregar o vapor da indústria tentada dentro da variável temperado a segunda linha é R C igual ao contexto da solicitação. - Leva O primeiro argumento é um pedido, - e o segundo argumento é um dicionário para o qual estou passando o usuário atual. - Então eu possível Kiki Usuário e eu passei usuário solicitado para ele, - tão gentil por padrão, - tem o usuário atual dentro da solicitação. - No nosso caso, - não há nenhum usuário atual porque nós não criamos a lógica obscura para o usuário Logan. - Então provavelmente será um usuário anônimo ou nenhum. - Então, os últimos forros foram durante um CTB responde, - e nos leva modelo argumento ou renderizar RC. - Agora, - se você se lembra, - STP responde o que estávamos girando quando estávamos girando a resposta Hello Notes - que era apenas um tubo a jusante. - O método não renderizar definido será processado usando o contexto de solicitação RC, - o que significa que ele usará a solicitação, bem como um estacionário que temos Boston para criar - o tablet. A mais uma coisa que você precisa fazer é que nós precisamos dominar certos símbolos, porque agora nossa visão não sabe o que é um carregador. - Então, a partir do jangle não tentaram empacotar a ordem importante e o contexto da solicitação. Vamos ver o que acontece quando carregamos o espaço. - Agora eu sou tentado não existe. - O que esta questão significa é que Jangles não sabe onde o nosso modelo externo investidor - é. - Está no diretório de templates de barra norte, - mas o Django não está ciente deste diretório. - Como você deve se lembrar, - ter um diretório chamado Templates dentro de um aplicativo é uma convenção. - Você também pode nomear historicamente outra coisa, - mas é uma boa idéia nomeá-lo temperança, - para que o bebê possa dizer jangle sobre isso diretamente é indo em configurações de barra absoluta. - Não seja que eu arquivado e olhando para o modelo restolho sublinhado EI Ours, - Eu vou adicionar em portas individuais. - Nota barra modelos. - Ao fazer isso, - estou dizendo ao Django que um dos diretórios em que os templates podem ser encontrados seus templates de barra norte . Agora que fizemos isso, vamos ver o que acontece. - Eu atualizo a página e bato. - Aqui estão as anotações, - e parece maior e mais escuro porque está no leste antes do imposto, - e esta é uma confirmação de que sua saída está realmente vindo do templo. Há uma última coisa que gostaria de mostrar nesta palestra. - Você se lembra como nós tínhamos um usuário muito médico designado para solicitar um usuário. - Mas isso não vai fazer muito para nós porque não temos bancos de dados configurados e jangles - A autenticação também precisa de bases de dados. - Ser capaz de ter usuários ah e solicitar um usuário. Então o que vamos fazer é em vez do usuário, mudar o nome da variável para usar o nome dela. - E em vez de usar usuários solicitados o valor para o nome de usuário chave, - vamos usar valor estático como meu nome cidadão. - Então estamos passando o nome de usuário variável e o valor desta variável seus cidadãos para o modelo -. - Vamos ver como podemos usar isso na lixeira. - Então eu tenho uma nota barra tentada Slash Industries Deimel e em vez de norte em duas chaves , - eu vou escrever nome de usuário. - Vamos ver o que acontece. A página diz olá, babá. - Então este é um exemplo de como você pode usar nessas chaves duplas qualquer variável que você - passou para você está tentado. - Somos o contexto dos relatórios. - Do seu ponto de vista, - isso conclui esta palestra e nossas anotações Olá são Vamos continuar este aplicativo em - a próxima palestra e estaremos aprendendo mais sobre formulários jangle e usando um formulário jangle para - criar nossa página de login. - Até lá, 5. Modelos e formulários: Na última palestra, criamos um hella notas usando modelos gerais. Nesta palestra, vamos aprender um pouco mais sobre modelos, as características mais avançadas ou interessantes dos modelos que o jangle fornece. E também vamos aprender sobre formas jangle que são maneira poderosa fora, criando empresas HTML. Nós respeitamos o código de casa e, finalmente, vamos encerrar a palestra criando nosso próprio Logan de para a página de login. A média em que o usuário poderá fazer login. Então Jang com benefícios fornecer-lhe algumas características muito poderosas, uma das quais eu me encontro usando com muita frequência. É a inclusão temperada, o que significa que você pode escrever um modelo e você pode incluir o modelo em outros modelos, que significa que você pode escrever um modelo genético. Por exemplo, se houver um terrorista rígido ou um pedaço de código HTML ocorrendo frequentemente em várias páginas do seu site, você pode escrever um modelo de sinal e ter a paz. Claro, em que despejá-lo e, em seguida, você pode usar o suporte goleiro aberto pessoa dial incluir e nome do modelo, dedo do diretor incluem o temperado dentro de outros modelos jangle, então você não tem que escrever que é química de novo e de novo todas as suas páginas. A segunda característica semelhante é atordoada de herança, que é semelhante à herança em uma linguagem orientada a objetos. Se você falar sobre isso, o que isso significa é que você pode escrever um modelo, por exemplo, de modelo HTML base, e você pode ter todos os modelos fora do seu site derivar dos modelos de e-mail baixista . Agora, por que alguém precisaria de um recurso como esse? Dê um exemplo de um site que tenha um cabeçalho com o menu. Ele tem um rodapé com todos os links para o seu sobre contato e páginas bloqueadas e, em seguida, no centro. Cada página tem seu próprio conteúdo, mas o cabeçalho e rodapé estão conquistando em cada uma das páginas, então há realmente duas maneiras de fazer isso. Com jangle, você pode usar a inclusão para criar dois modelos chamados Cabeçalho Notou ele e footed ou Iêmen Leste . E em cada uma de suas páginas você pode incluir o cabeçalho e rodapé Temperance e ter o conteúdo no centro em cada um dos seus modelos. Mas isso é um pouco complicado porque você tem que se lembrar de colocar o modelo de cabeçalho no pé, tentado em cada uma de sua página. Para evitar isso, posso usar herança temperada para usar a herança do templo. Eu escreveria um modelo. Vamos chamá-lo baseado em HTML. Eu colocaria a estima no tribunal pela minha cabeça em cima de tentativas. Então, no centro, eu colocaria um bloco, que seria um espaço reservado, e eu posso mostrar-lhe mais tarde como usá-lo em uma nova palestra. Mas abaixo desse bloco, eu colocaria o tribunal para o meu rodapé HTML. Agora, cada modelo que deriva de baía histórias TML pode substituir este centro Brock entre o cabeçalho e um rodapé e colocar seu próprio conteúdo lá. Então, tudo que você tem a fazer é dizer em cima de qualquer outro temperado estende baseado em HTML em percentil chaves, e isso resultará em que Dr modelo condução do artista baseado Iêmen e automaticamente transportado sobre o cabeçalho e rodapé . Assim, enquanto um modelo deriva da história CML, você automaticamente tem cabeçalho e um rodapé para cada página, e isso torna a vida muito mais fácil. Em seguida, os modelos Jackal também permitem que você use algumas construções de programação em um muito silencioso sonicamente, por exemplo, você pode usar uma extremidade dianteira para você para que você possa integrar através de listas ou casais ou dicionários, e você pode imprimir o conteúdo do para-lama ou criar listas a partir deles ou o que você tem. Você também pode usar instruções FNL e um número fora operadores relação para operar em variáveis que foram passados. Os filtros de modelo não são o mecanismo bolívar. Don jangle dumpers fornecer-lhe fora de interesse uma directiva que você pode colocar depois de uma variável separada por um tubo. E fazendo isso, o que você está fazendo é executar o conteúdo dessa variável através desse filtro. Ah, filtro seria algo muito simples, tal forma que converte de variável como um dedo do pé de corda. Em maiúsculas ou minúsculas você está você tem um monte de filtros disponíveis a partir do jangle por padrão, mas você não está limitado apenas a eles. Você também pode escrever em seus próprios filtros personalizados ou tags personalizadas, modo que o próximo ponto é laços personalizados. Em um exemplo que eu dei é caso camelo canalizado variável. O que o escritor fora deste conteúdo tag personalizado fazer é converter a variável ou qualquer que seja o valor dessa variável é em camel case ou maiúsculas agora. Isso não vem embutido no Django, mas você pode facilmente escrever uma tag personalizada chamada Camel case, que realmente seria uma parte na função. Isso, exceto uma variável e converter em caixa de câmera. Então a idéia é que os filtros podem ser mecanismos muito poderosos para se expressar forma concisa em modelos, e você pode estender a própria linguagem tentada escrevendo laços personalizados. Veríamos um exemplo disso mais tarde, Então, depois de estudar todas essas coisas sobre modelos, estaremos experimentando um pouco. Mas todos esses diretores, por exemplo, quatro loops. E se declarações e filtros em nosso exemplo de templo história índice. Html, Vamos passar para fazendas em seguida. Então, o que são formas de jangle? Fazendas gerais são representações fora HTM e formas na forma de um pipe na classe. Então, por que alguém iria querer andar de bicicleta na aula para alguma forma? Mas você pode facilmente expressar um HTML. A razão é que, se uma vez que você escrever um formulário jangle na forma de bicicleta em mais, você pode facilmente usá-lo ou um monte de lugares em seu Psycho verão. Em segundo lugar, um formulário chacal fornece a capacidade de validar um farm no lado do servidor depois validar informar. Ele também tem um mecanismo no qual você pode facilmente recarregar, uma forma de validação se sente. E finalmente, uma vez que vocês são agricultores postados e você obter as variáveis de volta no Django em um lado de verão, ah, formulário conversa automaticamente suas variáveis em classes python ou luta em tipos de dados, então há muitos sentimentos que você pode ter uma forma de jangle. Alguns dos comuns são cuidados de campo de caracteres, campo ou e-mail, campo ou campo de data e hora. Mas uma lista de todos nós está presente nesta venda que eu coloquei aqui na página do Projeto Geral . Há outra ferramenta chamada mais informar no jangle, que será mais clara quando estamos usando modelos jangle. Mas a utilidade fora da forma mortal é combinar uma tabela de banco de dados moral junto com a fazenda. Muitas vezes, seus formulários e o Iêmen do leste imitam a estrutura de uma tabela de banco de dados. E assim, em vez de escrever um modelo de base de dados, formulário Anna correspondente ao modelo forma moderna permite que você integre os dois e tenha uma forma moral de construção única, que estaria dirigindo a partir do seu modelo então, em outras palavras, é realmente um formulário automático, que é gerado a partir de suas tabelas de banco de dados. Manhã. Vamos olhar para isso mais tarde nas plantas quando estamos olhando para mais tópicos subsídios. Então agora vamos querer tocar um pouco de templates e verificar todas as construções que falamos, como Four Loops e if declarações e filtros. Então, para fazer isso, o que eu vou fazer é usar o modelo de histórias de índice demônios e copiá-lo em uma tentativa separada chamada exemplo. Noticiero. A razão de eu estar fazendo isso é porque eu quero usar o índice Therese Thiemo para, uh, estender sobre o aplicativo de notas Então eu não quero cortar. Dissed, tentado estão usando para o nosso exemplo. Então vamos apenas criar outro modelo chamado exemplo totems html dentro do diretório templos de barra de nota . Por enquanto, vou copiar o conteúdo das histórias do índice amanhã. Aqui, vamos escrever um novo seu antigo no Notre e chamá-lo de exemplos. Então, não comece euros. API. Por quê? Eu estou adicionando um exemplo ido de Nova York, e ele vai para as coisas de vista para fora, e eu vou nomear um exemplo então vamos abusar ey e montar esta nova moto em função, por exemplo, e ele vai para as coisas de vista para fora, e eu vou nomear um exemplo então vamos abusar ey e montar esta nova moto em função, por exemplo, Aceitou um pedido. Então, o que queremos fazer nesta função? Mas queremos retornar o modelo. Exemplo. Doris Thiemo. Então eu não copiaria o tribunal do índice aqui e mudaria o nome do modelo para exemplo de OGM policial. Então eu vou abrir uma nova janela do navegador e digitar o URL. Exemplo de barra de notas do host local 8000. Diz que o exemplo do nome não está definido na linha 20 do seu material antigo. Então vamos ver o que aconteceu aqui. A razão é que não temos a função de exemplo importante. Isto deve consertá-lo. Então diz “Tentado “não existe. Isso é muito porque nós apenas Oh, isso é porque eu tenho chamado tentativa exemplo história Stephen, enquanto na minha opinião parar você eu estou usando exemplo notado Iêmen. Então eu apenas consertei Refresque a praia novamente e aqui está a minha saída. Olá, cidadãos. Acabei de salvar minha tentativa. Não era seguro antes, então vamos fazer algo mais interessante. Este tablet eu quero demonstrar como usar uma mordida em quatro loop dentro tentou. Então, para usar um loop for, o que precisamos é de uma estrutura que eu possa iterar como uma lista por casa. Então vamos fazer uma lista de frutas. É o impacto de frutas coaguladas em você fez uma lista abrindo e fechando colchetes e depois apenas adicionando os valores que ela queria. Então coloque uma lista das suas comidas favoritas aqui. Eu gosto de bananas. Muito. E vamos os valores mobiliários. Então estou passando para tentar, a menos que seja chamado de frutas, que tem uma lista desses alimentos. O que eu quero fazer no exemplo Espaço é mostrar esta lista como uma lista HTML lista. Eu deveria ter sua variável de nome de usuário aqui, mas eu não estou passando mais, então eu definitivamente vou receber uma reclamação do Django. Deixe-me apenas jogar, Iniciar foram capazes aqui também. O mesmo seria antes. Voltando aos exemplos, pelo menos, OGM. Isto é como você escreve acessível em modelos jangle percentil aberto suporte para frutas e frutas e para terminar o formal, Eu só uso a mesma diretiva com percentil de suporte aberto e dizer fim para fora deste quatro. Olha, eu vou colocar o meu, hum para o meu Kemalist e depois vou matar, não é? E para cada elemento, vou usar uma Ella. E aqui eu vou para a mesma maneira que eu usei o nome de usuário foram capazes aqui. Quero dizer “fruta”. Então vamos ver se isso funciona. Aqui tens bananas, bagas e chaves. Então é assim que você faz um loop for. Em modelos gerais. Vamos tentar jogar um pouco de, se declarações. Digamos que, com base na temperatura de hoje, queremos um amigo dizendo se é bom dia ou está muito quente. Então, voltando ao meu editor, deixe-me passar o valor da temperatura de hoje na própria construí-los para a escolha do tronco. Então, apenas um bebê de passar outras variáveis. Eu vou passar um novo, eu chamei eles, e o Sr. Value of 10 que é 80 agora, será rápido e em minhas histórias de exemplo. O Temo. Eu coloquei este casaco aqui. Está chamando o percentil de Brackett. Se temps mais de 80. Está um belo dia. E, em seguida, na faculdade, pessoa do suporte traseiro discar outro. É muito difícil. Então, se a temperatura é menor que 80, eu deveria ver que é um bom dia. No meu caso, a temperatura é de 80 agora, então eu realmente deveria ver esta declaração l. Está muito quente, então vamos ver o que acontece. Vejo que está muito quente. Agora vamos ver a temperatura para algo melhor como 72 graus e o fresco. Então é um bom dia. Então é assim que se usa afirmações doentias. E, claro, você pode ter Ah, múltiplas declarações L aqui, então eu poderia dizer se a temperatura está entre 70 e 75 então é um bom dia. Se for menor que 70, diga que está muito frio. É bastante fácil fazer isso apenas usando e se mais construir apenas que eles usam em qualquer linguagem de programação. Então, a próxima coisa que queremos olhar para nossos filtros, vamos usar um dos jangles redefinidos filtros chamados mais baixos. Então você vê como nesta página meu nome está em um caso capital. E se eu quiser convertê-lo para o seu caso? Ou eu posso passá-lo como minúsculas no meu tribunal, apenas convertendo as cordas cidadão em minúsculas ou eu tenho a opção de ir apenas para a minha tentativa e filtrar esta variável por eu penso nisso. Jangle, template, ataque ou inferior. O que você faz fresquinha? Meu nome vai em minúsculas para ver o quão simples esta força e este é o poder de tentativas de sacos e você pode criar tentativas de ataques. Mas eu não lutei em tribunal, então isso realmente torna sua habilidade de estender a linguagem tentada do Django infinita, apenas limitada pelo que você pode escrever em Beit Home, e é isso que a torna tão poderosa. Então, no próximo vídeo, vamos realmente criar um formulário jangle e renderizá-lo para a nossa página steaming história índice e dar afastado para o usuário para Logan, porque isso seria da maneira para nós para conectar nosso aplicativo a um banco de dados e realmente pegar o e-mail e senhas de entrada do usuário e quer armazenados no banco de dados para um novo usuário ou verificá-lo no banco de dados e ter o usuário conectado. E é isso que vamos fazer. Nossa próxima palestra 6. Como criar um formulário de login para o aplicativo de notas: - o objetivo dos acidentes turísticos para criar um formulário que permita ao usuário fazer login. - Ao fazer isso, - nós também estaremos explorando alguns dos recursos para validar formulários jangle e como - propagar annettor invalidação Voltar para o usuário no navegador. - Abra as vistas de cima. - Você disparou para o pedido de notas. - Agora, - em nossa visão de índice, - podemos criar um novo formulário chamado log in form. Agora imagine se você estivesse criando um formulário A C. - M. - Um formulário para um usuário, - Logan, - você provavelmente teria um nome de usuário sentindo um campo de senha e um botão para submissão. - Vamos fazer a mesma coisa na nossa firma Logan usando um formulário de jangle. - Então o primeiro passo é criar uma longa classe de informação para a qual eu simplesmente tenho que criar o último - nome Logan formulário, - que deriva de formulários não formam. - Então é assim que eu crio uma nova classe para um antigo formulário de jangle. - Agora, - qual deve ser a conferência desta classe? - Eu preciso dos meus campos, - que nome de usuário e campos de senha, - então eu vou criar um nome de variável usando o nome deles. - Esta é uma variável de instância, - e isso vai ser uma instância, - fora de formulários ou campo de e-mail. Eu poderia ter feito disso uma instância do campo do formulário So Care, o que teria feito dele uma entrada de caracteres. - Mas eu uso um campo de e-mail porque eu vou usar e mails como seu nome de usuário para usuários - porque é um padrão muito comum na Internet. - O benefício de usar um campo de e-mail em oposição a um campo de caracteres, - é que haverá alguma validação em e-mails que serão fornecidos para mim a partir de dentro - jangle para que eu não teria escrever o código para verificar que o e-mail é um e-mail válido. - Por exemplo, - ele tem um depois de oito sinais e um ponto mais calmo ponto net ou algum tipo de dopamina associada - com ele, - para que a validação será fornecida por jangles e-mail feet classe. - Para mim, - a segunda variável de instância aqui é a senha, - então este é um combustível de caractere simples, - mas vamos passar algo chamado um dígito para seu construtor, - então visita é igual a partir do início possível entrada. - O que eu estou fazendo aqui é que eu estou pedindo jangles caractere alimentado para renderizar este widgets html. - Usando algo chamado entrada de senha por padrão, - caractere, - sensação de campo ou cadeira seria renderizado usando o tipo de entrada é igual ao ânus de texto Thiemo. - Mas uma vez que esta é uma sensação de passaporte, - Eu queria ter alguns caracteres especiais, - por exemplo, - mostrando nenhum texto ou não mostrando um texto ou mostrando o texto como acesso ou pontos ao digitar - o passaporte. - Então isso é um pouco de sanidade. - Com este Richard para passar por entrada irá automaticamente fornecer-me. - Então este é o quão provável é o uniforme mais fácil isso. Agora o que eu faço com isso desde que eu tenho aqui, o que eu vou fazer é passar isso para o meu modelo. Fazendo isso na minha função de exibição de índice, eu vou passar uma nova variável chamada formulário e eu estou indo toe atribuído a esta variável uma nova classe chamada formulário de registro. - Há mais uma coisa que preciso fazer. Preciso importar para o pacote das fazendas angulares. - Então o que eu quero dizer aqui a partir de formulários de importação jangle, - Caso contrário este símbolo de alguma forma não seria encontrado. Assim que eu tive isso, preciso usar esse formulário de alguma forma no meu modelo. - Então isso vai indexar a história vapor o. - Eu tenho lugares que vêm para bloquear fora da quadra que estão indo para incomum o suficiente e eu vou - através desta linha por linha. - Então eu estou declarando um formulário HTML normal por Singh do nome do nome é igual a log-in para ele. - Ação é igual ao índice de barra de nó de barra, - o que significa que na submissão eu vou voltar para a minha exibição de índice com toda a postagem de dados. - Estou especificando o método do formulário para ser um método post. E isso é algo que estou especificando aqui chamado CS fora do token, que é necessário para evitar falsificações de pedidos cruzados. - Não se preocupe com isso agora. Voltaremos a ele mais tarde, quando formos a segurança. - A próxima coisa que eu faço aqui é declarada os formadores de formulários uma variável chamada como sublinhado. - Seja assim o que estou dizendo é farm dot como sublinhado p e isso parece em humano comeu todos os campos da fazenda automaticamente aqui. - Assim que isso for feito, - seu formulário que tem nome de usuário e senha sente, - aparecerá automaticamente aqui em sua página HTML. - Você não precisa digitar explicitamente o tipo de entrada é igual ao texto. - Então este é apenas um exemplo de conveniência que os formulários oferecem para você. - A próxima linha é pobre, - típica cúpula, - que vai simplesmente colocar um botão de cúpula aqui para enviar meus formulários. O lado seguinte é interessante, então uma forma de selva tem dados internos, cartas de chamada sexuais. - E este editores é um dicionário através do qual posso ter acesso a qualquer editor que tenha acontecido ao enviar um formulário. - Por exemplo, - em nosso farm há um campo de e-mail, - e se eu não digitar o caractere de taxa no campo de e-mail, - isso é um erro, - e o formulário jangle sinalizará que entra e gerará uma mensagem de erro para Isso. Então este formulário de dicionário não editores me dá acesso a estas cartas, e eu estou negociando este dicionário. - Se você trabalhou com mordida nisso, - este é o caminho normal para isso. - Lendo sobre qualquer tubo no dicionário. - Quatro erros de vírgula de campo. - Seu campo é a chave e outros são os valores no dicionário para erros de vírgula de campo. Informado por editores de itens, coloquei isso em uma chave de percentil quebrada e dentro deste bloco, estou imprimindo o valor dos erros aqui, que são o valor do dicionário de valores chave e, em seguida, eu termino o para Você. - Então é assim que eu anexaria o farm à minha página HTML. - Vamos ver o que acontece quando envolvemos o euro. - Lá vai você. - Agora temos um formulário, mas nome de usuário e possíveis sentimentos. - Agora vamos tentar enviar este formulário, então estou apenas de lado. - X y Z e ABC é nome de usuário Impossível e pressionando Summit. - Vamos ver o que acontece. - Não aconteceu nada. - Então, o que aconteceu quando pressionei? - Submeter são os formulários que a Ação se envolveu. - Envolveu a vista de índice. - Então vamos verificar se realmente entrou no mundo. Vou pressioná-lo novamente com a mesma entrada, ABC e X Y Z, e vou monitorar a janela do shell onde meus servidores embutidos estão funcionando. - Então eu pressiono enviar e você vê que este novo pedido aparece aqui. - Diz que é um pedido de postagem e que está na caminhada do índice de barra do nó da barra do euro. - Então é isso que está acontecendo quando eu estou atingindo meu formulário e eu estou recebendo a mesma página de volta - porque isso é para minha exibição de índice faz isso ele realmente está funcionando corretamente, - então vamos fazer nossa exibição de índice cuidar deste formulário porque agora ele não está fazendo - qualquer coisa com ele. Então, já que estamos na mesma visão, esta visão é responsável por duas coisas agora. - Inicialmente, - é responsável em obter uma solicitação get para retornar o índice receber uma página com um formulário vazio . - Mas uma vez que recebeu a fazenda sob a forma de um pedido de correio, - é suposto validar o formulário e, no caso de muitas vezes entrar, - propagar essas cartas de volta para os usuários. - E se a fazenda não tem entra, - esta visão também é responsável pela assinatura do usuário e olhar no usuário. - E o usuário já se inscreveu apenas fazendo login no usuário e, em seguida, nos redirecionando para o painel. - Então esta vista vai fazer todas essas coisas. Então, pedaço por pedaço, vamos fazer essa vista, fazer todas essas coisas, então comece. - Mas precisamos saber que tipo de pedido é esse ou se opõe? E para fazer isso, vou dizer se o assunto solicitado é igual ao curso. - Então o pedido tem um método muito recordado que pode ser definido em conjunto, cabeça de cartaz ou o que for. - Http. - O pedido foi recebido. - Então agora eu sei que eu tenho um pedido de post neste bloco dentro de um Ziploc, - e eu posso fazer o que eu quiser com o fórum neste bloco. - Então o que eu preciso fazer é verificar se todas as variáveis na solicitação post são válidas. - Então a maneira de fazer isso é criar uma nova instância da forma e o parlamento levantá-la com - solicitar o nosso cargo. - Então, em uma visão jangle, - a variável requests contém get solicitado e post solicitado, - que são variáveis fora dos tipos. - Conjuntos de consultas. - Cory conjuntos não são dicionários, - mas eles agem como bicicleta em dicionários, - e eles conterão todas as variáveis que têm feijão enviado pelo usuário. - Assim, o nosso caso e o usuário envia o nome de usuário e senha formulários a solicitação são opostos, - irá conter o nome de usuário e passaporte como chaves e os valores como os valores do histórico -. Então envolvemos nosso formulário com o pedido de perímetro fora do posto, e agora vamos verificar se o formulário é válido, para o qual vamos simplesmente fazer isso e o conhecimento é impresso. - Uma declaração aqui dizendo que formulário é vetado outra forma não é sobre isso. - E só para ter certeza que também é colocar para fora uma declaração aqui dizendo, - - recebeu o pedido de correio. - E agora vamos tentar enviar este formulário. - Diz que o formulário não é. - O mesmo recebido proposto. - Então a razão pela qual a fazenda não é ruim é porque temos um campo de e-mail aqui, mas não estamos passando um e-mail válido. - Deixe-me passar um e-mail válido como sit Azadeh demônio dot com, - que é o meu e-mail, - e colocar um possível e eu vou para algo neste formulário novamente. - Desta vez, - diz, - formulário de pesquisas recebidas é válido. - Isso é porque você passa sobre isso. - E-mail. - Então este é um pequeno exemplo fora do poder das fazendas e como isso pode ajudá-lo a reduzir a quantidade de Cody, certo? - Porque caso contrário você teria invalidando seu farm e JavaScript ou usando um diferente - plug in. - Agora, - desde que o Django formulários e-mail, - campos têm suas próprias rotinas de validação. - Você não tem que fazer isso. - Não é que saibamos como podemos escolher entre uma forma inválida. - Vamos pensar no que precisamos fazer. - Se o nosso formulário for verificado, então procederemos com o registro do usuário ou Logan. Vou colocar um comentário aqui por enquanto, mas a fazenda não é sobre isso. - Quero que o usuário saiba que o primeiro não é válido. - Como faço isso? - Preciso enviar a mesma página. - Index o liberou de volta para o usuário, - mas desta vez eu preciso enviar a instância correta do formulário - que contém a informação de que o farm não é válido. Então, para fazer isso, posso copiar estas linhas. - 10. - Carregador político não ficar tentado e são sequelas porque contexto e enviar de volta em um CTB - resposta da mesma forma que eu estou fazendo isso. - No caso de um pedido get fora do curso, - isso é alguma repetição do tribunal? - E nós vamos tentar refatorar alguns dos tribunais aqui. - Então, em vez de dizer forma e formar uma nova instância da firma Logan, - Eu só vou usar a mesma instância do formulário Logan que nós criamos aqui e melhor - pedido de moderação são forçados e eu estou retornando o modelo. - Vamos ver o que acontece agora se eu me colocar com algo inválido e nome de usuário, - que não é um e-mail, - diz, - digite sobre ele endereço de e-mail. - Vou comer dizendo duas vezes, - dizendo que duas vezes é porque formado ou SP por padrão tem a outra informação está imprimindo - para fora Então nós realmente não precisamos disso. - Mas ainda é útil saber que é assim que podemos renderizar entradas para campos separadamente, campo por campo, se precisarmos de dedo. - Então vamos remover isso e fazer isso de novo. - Desta vez vejo uma única carta, - mas diz-me que introduza um endereço de e-mail válido. - Então deixe-me fazer isso. - Eu me apresento e o formulário é preenchido e eu volto para a equipe de investigadores da praia. - Então, o que acontece? - E aconteceu no cenário válido é que ele apenas disse formulário é válido e, em seguida, ele conceder - em frente e executado este frio para o pedido get. - Na verdade, - isso é errado, - porque eu não deveria estar executando o tribunal para obter o pedido. - Eu deveria colocá-lo em outro quarteirão. - E o que vou fazer agora é que no caso do primeiro é válido. - Vou usar algo chamado redirecionamento e dar um novo nome para o painel. - Então o que estou dizendo é redirecionar-me para a página do painel se o formulário for válido, mas ainda não temos uma base de painel, nós teríamos um criar um. Então vamos anotar, cortar suas coisas antigas e entrar em uma nova página. - Você é velho. - Nós vamos chamá-lo de dinheiro para você será chamado de painel também, - e vamos dar-lhe um nome curto fora painéis. - Então este nome curto vai ser usado no redirecionamento. - E é aí que este aliases útil agora redirecionamento é uma função que jangle fornece para usar - para ser rapidamente capaz de redirecionar para diferentes euros a partir de seus pontos de vista. - E esta função está presente no django dot short goods, - que é um pacote jangle que contém muitos atalhos úteis de seu realmente - redirecionamento importante por enquanto. - Então, se o formulário for válido, estamos redirecionando para o painel, que significa que precisamos da visualização do painel. - Então vamos escrever que ele faz que a visão de mundo irá simplesmente conter o mesmo tipo fora do tribunal para - carregar e mostrar um modelo, - exceto que desta vez o tentado será um painel de controle ou modelo do Iêmen Oriental, - que não existe direito agora, - e nós vamos criá-lo. - Então eu mudei, - tentei dashboard, - ou HTML, - e eu mudei dicionário para uma vitória vazia porque não estamos passando nenhuma variável - agora . - E vamos criar o painel ou a equipe leste de despejo, o que seria apenas um painel por enquanto. - Então vamos tentar fazer isso funcionar. - Eu coloquei um e-mail e estou enviando. Diz que o Dashboard não está definido e o outro vem das tuas coisas antigas. - Você I Isso é porque eu não tenho painel importante em seu vai pará-lo. - Você sabe, - em vez de dizer índice, - exemplo painel, - eu poderia simplesmente dizer de notado nossos pontos de vista. Estrela de importação geralmente é um bom dedo do pé de prática. - Enumerar os símbolos que você está exportando ou importando de ah Jangle módulo Baikonur - módulo Só porque ele dá o leitor fora de seu código e idéia de onde os símbolos estão vindo - e também não platter seu. - O teu espaço de nome. - Porque se você está importando um monte de símbolos usando estrela, - então tudo no módulo está entrando em sua estrutura de interpretador python. E isso não é muito bom, porque se você tem um módulo grande com muitos símbolos e você não está usando todos eles, então isso faria seus tribunais mais baixos. - Mas neste caso, - vou dizer estrela, - porque provavelmente vamos usar todas as visualizações de “nada” neste seu arquivo. - Então vamos ver se funciona melhor. - Agora submetem-se? - Não. - Então diz “não”. - Parar usado ou indexar o não retornar um CDP responsável. Então o que precisávamos fazer era devolver o redirecionamento, não apenas dizer o direto. - Você ainda tem que retornar algo da função e redirecionado gerador http. - Objeto de resposta e vire para o navegador. - Então lá vai você. - Agora temos isso de contagem pronto, - onde você pode digitar sobre e-mail e passaporte, - e pressione omite e você é redirecionado dedo do pé, - página do painel. - Mas o que está faltando aqui é a criação real de um usuário no banco de dados. - E se o usuário já está registrado em fazer login no usuário e isso é o que nossa próxima palestra focará para ver como podemos conectar o Django a um segredo de banco de dados como três. - Como podemos adicionar usar-nos ao banco de dados, inscrevendo-os e como podemos fazer login inscrito - usuários antes de iniciar a próxima palestra. Você deveria ter um segredo, como três em Seul na sua máquina, porque vamos usá-lo e conectar-nos a ele. 7. Usando o ORM do Django e criar modelos: vamos falar sobre modelos jangle e bancos de dados. É importante para esta palestra que você tenha sequelas três instaladas em suas máquinas se você não sugerir que você faça isso primeiro e depois abra esta palestra porque nós vamos precisar dela e eu vou estar te guiando através de como se conectar a sequelas foram , para que as desconexões de dados e configurações em geral possam ser especificadas no nível do projeto. No arquivo stop ey repentino, há um dicionário de banco de dados que analisamos brevemente, e é aqui que você pode especificar suas conexões de banco de dados. Você pode coletar uma base múltipla posterior, mas há um banco de dados padrão ao qual você pode se conectar, e por isso isso significa sempre que você não tiver especificado explicitamente qual banco de dados deseja executar. Aquarium Jiang assumirá que você deseja se conectar ao banco de dados padrão para especificar o banco de dados completo. Você usa o teclado padrão como uma chave na base de dados do dicionário, mas é claro que você pode ter vários bancos de dados. Mas se tudo que você poderia estar conectando sequela como três, mas você também poderia estar conectando toe oracle, e você também poderia estar se conectando a um banco de dados de objeto como mongo db General estabelece a conexão com seu banco de dados é o primeiro hora em que recebe uma consulta de um usuário. O script de jangle conseguiu, que usamos para executar o jangle embutido cortado. Também forneça seu comando chamado Sing TV Sink TV. Como o nome indica, sincroniza todos os seus modelos de base de dados com seus bancos de dados de ação. O que isso significa é que vamos dizer que você cria uma nova chamada moral. A manhã do usuário, que tem vários campos como nome de usuário, configurações de passaporte e outros se sente pertinente para o usuário. Quando você executa Sting Devi, Django vai para a frente e criar tabelas de banco de dados no banco de dados para que ele irá criar uma tabela de usuário, e ele irá criar todos esses campos na tabela de usuário. Agora este é um passo opcional. Você sempre pode mantê-lo e criar sua própria tabela usando a sequela. Comando Criar Tabela. Singley não criará uma tabela se ela já existir, então você não precisa ter medo de solteiro. Ser mais. Eu posso você tabelas de banco de dados e também uma vez que você cavar seu modelo, por exemplo, se você adicionar uma nova sensação para o usuário, digamos que o certificado de usuário ou usuário I p endereço. O Django irá em frente e atualizar a tabela do usuário automaticamente quando você estiver em um único comando. Então vamos falar sobre modelos jangle. Simplesmente falando, um modelo jangle é um pipe na classe que mapeia para um banco de dados relacional ou uma tabela de banco de dados de objeto . Então, uma manhã de uma mesa. Não, vamos pensar em um cenário onde você deseja obter uma lista de todos os usuários do seu site mas em seu sistema e fazer uma lista de objetos de usuário fora dele. A classe de usuário é algo que você criou e deseja. Contas para os resultados de sua consulta secreta seleciona o tempo dos usuários em uma lista desses objetos de usuário. O que você faria se você não tem um mapeador de relação de objeto é que você faria as consultas de sequela usando talvez Jerry B zero nly BC em. Você obteria resultados de volta que o objeto, em seguida, ele lê através desses resultados que o objeto, e você criaria objetos de usuário para instâncias livres ou de classe fora de sua classe e você é atribuído o campo apropriado recuperado do banco de dados para o instância. Variáveis fora de seus objetos de usuário. Isso é muito trabalho, e é meio tedioso do dedo do pé. Ter um modelo de jangle tira o fardo dessa lógica de você. Então, se você executar louco usando um modelo jangle, você não iria obter de volta resultados que. Mas ele teria de volta uma lista de objetos de usuário, então a tradução já foi feita para você. Além disso, Jangle ou eu sou também fornece-lhe uma linguagem de consulta. Isso torna muito mais fácil fazer declarações de sequela mais simples e um pouco complicado também. Eu não iria propor a usar a ordem jangle para consultas muito complicadas que têm juntando juntas ao longo de várias tabelas, porque fica realmente tedioso e obscuro foi uma vez que você começa 30. Mas para consultas de nível de dificuldade relativamente simples e intermediário, Jenga Warum pode tornar sua vida muito mais fácil. Vamos colocar nossos modelos de jangle em um arquivo chamado Modern Stuff. Em um modelo geral, você pode ter vários campos apenas da maneira que no formulário jangle você pode ter vários campos. Há campo de caracteres no campo do professor, campo data e muitos mais. E então há uma lógica no jangle, ou, hum, hum, que automaticamente Mathies se funde com o tipo de banco de dados de relação atual baseado em qual base de dados você está usando, por exemplo, a cadeira campo. Se você especificar um personagem máximo, terra em seu mortal, seria Mato um campo de fratura nas costas em sua tabela de sequela fora desse mesmo personagem, Terra Jacko Armas também reduzida. Especifique relacionamentos entre tabelas. Por exemplo, você pode usar a chave primária igual a true dentro de seus campos. Para especificar que um certo sentimento seu modelo é uma chave primária. Você pode especificar relacionamentos de chave estrangeira entre tabelas, e você pode ter muitos a muitos relacionamentos e 1 a 1 relacionamentos também. Isso constitui uma parte um pouco mais avançada de Jang Warren, e vamos dar uma breve olhada nisso no final do curso. Então, neste ponto, estamos prontos para configurar sequela levemente com emaranhado. Então vamos para a nossa concha e olhar para definir coisas. Você está tão no topo da configuração parou por aqui. Há um dicionário de banco de dados no dicionário mais tarde. Vou especificar o motor como jangled ou DVD Bolseiro fora da árvore de sequelas. Em seguida, eu vou dar as partes para o meu arquivo secreto levemente nos atributos de nome. No meu caso, eu vou estar usando um arquivo chamado usuários slash sit. Assad barra dados barra absolutamente dot db Este é o arquivo de vida secreta que estaremos usando toe Persistir meus dados e que deve ser isso para a luz sequela. Os atributos, como host de senha de usuário na porta Eu não sou usado para sequelas Árvore. Mas se você estiver configurando um banco de dados como Oracle, DB dois são minha sequela são Sequel Server. Você estaria usando esses atributos. Agora que sabemos que Jango pode se conectar a um banco de dados, vamos escrever nossa primeira manhã aberta não modelos de barra, não B y. Então, existem sete modelos que podemos criar. Precisamos de uma representação do usuário. Também precisamos de uma representação de uma classe norte. Um objeto de nota nas pequenas abelhas para tempestade notas lá. Agora, realmente não precisamos criar um modelo de usuário porque o sistema de autenticação jangle fornece automaticamente um modelo de usuário para você. A mesa não existe, mas será criada quando não afundarmos TV. Se optarmos por usar o sistema de autenticação jangles, que vamos. Então, já que não precisamos de um modelo de usuário, vamos criar um modelo de nota em vez disso. Então, para fazer isso, eu vou criar uma classe de nota e eu vou conduzi-lo a partir do modelo de início moderno. Agora vamos pensar no que uma tortura tem. Talvez, você sabe, deveria ter um título, e talvez ele deveria ter alguns textos associados a ele, e também deveria ter criado e o proprietário fora de uma nota. Então vamos dar a ele um campo de proprietário. Agora. A sensação de ordem deve ser o usuário que criou a nota. Mas também já temos uma tabela de usuários, e não queremos replicar as rixas para usar uma tabela. Então vamos fazer isso uma chave estrangeira e corrigir para a tabela de usuários. Agora não sabemos como é um usuário. Não está especificado em moral top ey. Então, vamos importar o uso de símbolos de um pacote chamado jangle dot con trick dot art dot models, que contém jangles redefinido classe de usuário, que é usado no sistema de autenticação jangles. A próxima sensação deve ser o título de um título de nota é igual a campo de gato, e a sensação do carro vai ter o máximo. Digamos, fora de 100 caracteres. E, em seguida, há um texto da nota, que também é carregado campo com o comprimento desligado. Digamos 500 caracteres. E, finalmente, queremos a data ou hora da criação do Norte. Então vamos fazer com que ele crie hora igual data, campo de tempo. É assim que o nosso Norte se parece mais. Esta tabela ainda não existe no banco de dados, mas vamos executar em seguida o comando de TV sink e tentar criar essas tabelas. Então eu vou para o Shelvin sobre meus servidores de desenvolvimento funcionando. Vou desligá-lo. E em vez disso, no meu diretório de projetos, eu bebia, lutava em casamento fora da TV e via o que acontece. Parece que o Jack estava a criar um monte de mesas. Muitas dessas tabelas começam com um prefixo de sublinhado uth. Estas são tabelas, autenticação útil e permissões lá, também usadas pelos jangles pelo sistema de administração jangle, que aprenderemos mais tarde. Há algumas tabela de limpeza interna, como sessão jangle, que é usado por jangle para manter sessões. Agora, a única coisa que está faltando aqui são nossas anotações. Ainda assim, não o vemos em lugar algum aqui, e há uma razão para isso. Simplesmente. Nós só vamos criar tabelas para modelos dentro do APS que são especificados em seu par APS instalado dentro de sua configuração parar você, I arquivo. Então, vamos adicionar notas. Toe instalado ABS configurações abertas Não seja. Por que, de absolutos absolutos cortar absolutamente e olhar para o obstáculo instalado e adicionar notas aqui. Então, estamos registrando nossas notas de inscrição com o projeto absoluto. Agora, já que você já está começando este processo, vamos apenas pressionar Sim, aqui. Quando o Django nos pergunta, você apenas instala jangles old system, o que significa que você não tem nenhum super usuário para encontrar. Gostaria de criar um? Agora vou dizer sim, Outro super usuário criativo. É tão só eu. O nome de usuário sit está pronto, mas eu não vou usar um e-mail, então eu vou dizer que cidades são um demônio ponto com. Você pode usar seu próprio e-mail porque se você usar o meu, você pode parar de me enviar e-mails. E as minhas letras iguais são as mesmas que o meu nome de utilizador e o meu possível. Eu posso manter qualquer coisa no meu passaporte, então eu apenas entrar PWD realmente e inseri-lo novamente e Super usuário do General Say criou índices insultuosos com sucesso. Agora verificamos que a nossa tabela realmente foi criada. Deixe-me abrir uma nova janela shell e eu vou executar o segredo como três, que pode ser executado a partir do prompt de comando, e eu vou dar-lhe um argumento de zona, meu arquivo provável secreto que eu tinha configurado na minha instância jangle. Os dados do usuário cidadão barra absolutamente na TV. Então aqui está um segredo como shell de comando. Quero ver quais bancos de dados foram criados. Então, o que eu posso fazer para que Segundo no comando Selecionar Star Front Secret como sublinhado Masters e terminou com o mesmo igual. Na verdade, é luz secreta, entendido, mestre, não mestres. E eu vejo um monte de saída, que é todas as tabelas que Jang foi criado e todos os índices que foram definidos no estábulo . Então vamos para o interessante. A tabela de usuário de Autenticação. É assim que os usuários seriam representados no sistema emaranhado. Então, cada mesa criada pelo Jangle Warren tem um I.D. o que é realmente um que você não sabe, e é um primário. Assim, nosso usuário estável tem uma senha ID última aberta, se os usuários um super usuário, um nome de usuário primeiro nome, sobrenome e-mail é parar está ativo e eles se juntam. Você não está limitado apenas por estes sente que há uma maneira de estender jangles usuário e conectá-lo ao sistema de autenticação jangles e adicionar seus próprios campos à sua classe de usuário. Então vamos ver se a tabela de usuário contém algo. Agora, no entanto, as estrelas Cilic começam a partir de Todos os usuários, e ele faz o ID de usuário um, e há algo no campo do passaporte, mas minha senha era Peter Beauty. Então, o que o jangle faz automaticamente para você é criar uma criptografia de ensaio fora do seu passaporte e armazená-lo em vez de criar um ácido gota e armazená-lo. Isso é porque é péssima prática armazenar passaportes crus em seus bancos de dados porque se seu sistema é hackeado e as pessoas podem olhar para passaportes Euro, mas ontem é, ah, criptografia de um jeito. Então você não precisa se preocupar com isso se seu passaporte estiver criptografado e armazenado no banco de dados, então jangle automaticamente faz isso para você. Este é provavelmente o meu último login no tempo, Andi, meu e-mail e meu nome de usuário e alguns dos dados. Então isso verifica. E se isso está funcionando para você, ele verifica se ele foi conectado com sucesso. Agite suas sequelas. Fidelity, mas ainda não terminamos. Ainda temos que fazer Cindy criar nossa mesa de notas. Então, uma vez que temos as notas, aplicativo, instalar lapso, que deve ser relativamente fácil de fazer. Agora só precisamos correr solteiros de novo. Certo, entrámos em erro dizendo que a chave estrangeira não está definida. Não que simplesmente porque temos esquecido toe adicionar um prefixo o prefixo módulo para chave estrangeira em nosso modelo stop ey. Então vamos continuar consertado. Isso deve bastar. E nós vamos ver frases problema com outros campos também, como sensação de cadeira e sensação diurna, então isso deve ser consertado também. Então isso é uma coisa TV de novo. Então, vemos uma nova linha aqui, criando notas de tabela, nota de sublinhado. Então, mesmo que o nome do nosso modelo não é a tabela que o jangle cria é notas nota sublinhado porque ele sempre prefixo é o nome da tabela pelo nome APP sobre depois notas escolares na tabela dentro da nota de chamada apus. Isso pode ou não ser útil para você, mas o General Modern fornece uma maneira de fornecer um nome de tabela personalizado. Por isso, se quiseres chamar à tua mesa as minhas notas especiais nas minhas notas fantásticas. Você sempre pode substituí-lo usando o meta director em um arquivo de águas da selva. Então não que tenhamos criado uma nota estável, e temos nossa tabela de usuário já criada pelo Django. Estamos em um bom lugar agora para começar a autenticar usuários e criar notas. Na próxima palestra, vamos ver como autenticar usuários e adorá-los. 8. Autenticação de usuário do Django: - Neste ponto, - temos tudo o que precisamos para ser capazes de fazer login, olhar para fora e autenticar o usuário. General nos fornece um monte de ferramentas, o que permite fazer o mesmo. - A maioria dessas ferramentas estão no contrato jangle dot ou deve pacote. - Nós já olhamos para algo neste pacote, - que foi o contrato jangle que Auditor Model Start classe usuário, - que representa um usuário na selva. - Então, há três métodos principais na aula de arte contratual. - Eles são na verdade alguns, - mas estes são os três assuntos que você estará usando o primeiro 1 do autenticar, - que verifica por nome de usuário e senha - a presença do banco de dados do usuário e valida o nome de usuário e senha e retorna um - usuário na validação. - Mas se ele não encontrar o usuário, - ou se é um nome de usuário ou senha errado, - ele retorna objeto desconhecido desconhecido. - O segundo método. - Logan Associa um objeto de usuário a uma sessão e, finalmente, desassocia esse usuário - objeto da sessão em jangle quando seu modelo de consulta. - Em vez de dizer algo como selecionar estrela do usuário, - você usaria os usuários ou objetos não obtêm ou usuários ou objetos seu próprio metal. - Existem outras variações pelas quais você pode filtrar, - em outras palavras, - fornecer cláusulas onde para sua consulta. - Então, quando você diz que o usuário não objetos são todos, - você está essencialmente fazendo algo como seleção de estilo de usuários. - Quando você está fazendo usuário, - os objetos não recebem e especificando um atributo em Mr Search para, - por exemplo, - nome de usuário é igual a John Doe no gmail dot com. - O que você está dizendo é essencialmente selecionar início de usuários onde usuários químicos John Doe. - Há muitas outras partes da linguagem Jungle Query, - que vamos olhar mais tarde, - que nos permitem fazer consultas mais complexas, como agregações em junções e selecione - declarações com operadores booleanos. - A lei exigiu decorador, - que eu também mencionei anteriormente, - é uma ferramenta importante em nosso arsenal para autenticação de usuários. - No nosso caso, - nós temos a página do painel, - e nós não queremos que o usuário chegue ao painel sem olhar, - e nós estaremos usando o decorador longo e necessário para redirecionar alguém que veio ao nosso - e de alguma forma está acessando a página do painel. Nós somos It's Ural, mas não está realmente trancado, e vamos redirecionar essa pessoa ou aquele usuário de volta para a página de índice usando o decorador do robin . - Então nosso próximo EUA é fazer login e olhar para o usuário. - E isso nós estaríamos fazendo em nossa função de índice onde temos algum tribunal de espaço reservado para - o mesmo. - Então voltando ao efeito, - Senador, - isto é que nós tínhamos deixado da última maneira colocar um comentário na função de índice dizendo que ele era - o registro ou log no tribunal. - O que vamos fazer aqui, - ou a lógica que você seguirá é depois de receber o nome de usuário impossível do formulário - vamos descobrir se esse usuário existe. - Se o usuário existir, - vamos em frente e autenticar e fazer login no usuário. - Se não, vamos criar o usuário. - Então vamos ver como podemos fazer isso. - Nós já temos nossos pedômetros do formulário em nosso dicionário post de início de solicitação. - Agora temos que recuperá-los de lá. - Então o que eu posso fazer é usar ganhar renda um passe para o primeiro pedido pensamento nome de usuário post - vai pedir início bus posado faria se eu tiver nome de usuário e senha e meu pedido - oposto. Neste ponto, eles devem estar nessas variáveis de nome de usuário e senha, caso não estejam presentes. - Por alguma razão, - Eu quero fornecer um argumento padrão de nenhum para o pedido. - Nossa força e isso está faltando um ponto get método, - então eu iria obter um nenhum por padrão, - não vai verificar se a entrada do usuário está presente, - se não nome de usuário. - Isso significa que o nome de usuário não é nenhum ou não Senha. Isso significa que não recebi um nome de usuário e partes da fazenda, nesse caso não há nada que eu possa fazer a não ser propagar essa informação para o usuário. - Então eu só vou retornar em uma resposta neste caso, - nome de usuário ou senha, - não presente. Então, neste momento, temos nome de usuário e senha, já que este tribunal não foi executado. - Agora vamos verificar se o usuário está presente no banco de dados. - Estou tentando buscar o usuário do banco de dados pelo seu nome de usuário, - então se um usuário está presente e eu tive que atender para obter o usuário, - caso contrário eu vou criar o usuário. - Em ambos os casos, - Eu preciso fazer login no usuário agora isso. - Objetos que criam método de usuário está tomando três argumentos. - O primeiro é o nome de usuário, - e o segundo é o e-mail. - E terceiro é o passaporte. - No meu caso, - o nome de usuário e e-mail são os mesmos. - Então eu estou apenas passando o nome de usuário para negrito autenticado realmente leva nome de usuário e - senha, - mas eu vou dar esses argumentos por nome. - Isto é algo em que tens andado a fazer Bip. - Se você fizer isso, - você não precisa se lembrar da ordem em que os argumentos aparecem na função. Então, neste momento, ou meu usuário foi autenticado. - Tudo foi criado, - nesse caso eu vou fazer login no usuário. - Acha que a função do Robin? - A longa infecção requer um pedido e o próprio usuário agora nós realmente não importamos. Os símbolos tendem a pegar Logan e sair ainda. - Então é assim que podemos fazer isso. - Nós podemos realmente, - símbolos importantes e este assunto em si no índice. Mas em vez de fazer isso, vou fazê-los aqui no topo novamente porque vou usá-los no método de logout também. E depois de um Logan bem-sucedido, vou redirecionar o usuário para o painel. - Então vamos testar isso. Diz que o nome local do usuário não está definido, o que é porque eu não incluí o modelo de uso dele. - Vamos tentar de novo e eu tenho o painel. - Como sabemos que nosso usuário está realmente sendo autenticado, - mas não vemos nenhum editor e dizemos que seu formulário é válido. - Mas eu ainda gostaria de ver o que realmente aconteceu aqui que criou um novo usuário ou não - tendem a obter o usuário. Então, por enquanto, vou falar com o Prince, , colocar algumas declarações impressas aqui. - A outra coisa que vou fazer é no meu modelo de painel. - Vou imprimir o nome de usuário. - Eu só vou dizer chaves, - chaves abertas abertas usuário aberto porque eles usam disponível é sempre uma parte da solicitação. - Que refrescante como ele tira as cidades do demônio. - Então isso me diz que estou recebendo o usuário correto. Então vamos tentar entrar e me trancar de novo. - Ressam-lo e vamos ver o que o estranho é, - diz, - saudade no usuário. - Mas eu já era amado em, - então provavelmente não me conhecia de novo. - Ele disse. - Mas não disse criação de novo usuário porque eu já existe. Agora, se eu voltar a conhecer o índice de barra e colocar um novo usuário aqui, vou colocar apenas um endereço de e-mail aleatório no Hotmail Dot com e ver o que acontece. Recebemos uma exceção chamada “Não Existe”. - Exceções. Então o que realmente está acontecendo é que esse usuário não tem objetos que ficam mentindo está jogando. - Uma exceção não existe porque este cidadão usuário e O'Quinn dot com não existe no nosso sistema agora. - Então eu envolvi esta linha em uma tentativa, - pegar bloco e tentar exceto quebrado luta e eu estou pegando. - O objeto não existe. - Exceção. E se eu receber essa exceção, criarei um novo usuário. - Não se oponha. - Ainda criar usuário sublinhado. Então vamos tentar de novo e ver o que acontece de novo. - Eu tenho as cidades de usuários fora de Hawkman dot com, - e eu pressionar enviar, - e desta vez eu recebo painel sit, - Assad me disse local Então nós criamos com sucesso um usuário e Lageman, - nós podemos verificar isso em nosso banco de dados secreto de luz sendo selecionado, - começar de todo o futuro, - então não BC para usuários aqui, - nos definir para fora no Gmail Dot com e nos sentar no Hotmail Dot com. - Então isso nunca é o processo de login e inscrição. Ainda há uma vez que precisamos completar, que é o processo de amor. - Então vamos ver como podemos fazer isso. - Na verdade, é bem simples. - Em seus euros populares, - você pode adicionar uma nova função no novo seu antigo chamado sobre. Na verdade, vamos fazer um barco e não muito tempo. - Isto é porque logout da função interna jangle para que não queremos dar-lhe o - mesmo nome da vista. - E o você é um slash amor fora e na nossa visão, - então você eu vou escrever a função de log off. Devíamos simplesmente chamar a função jangle mais longa. - Passe-lhe o pedido. - Redirecione a resposta para o nosso pico de índice. - Agora, - para envolver esta função mais longa, - precisamos de um link em nosso painel que permita ao usuário amar fora. - Então vamos dar um link aqui. - Uma armadilha é igual a cortar o amor ao norte e vamos testar é para cima. - Diz: “Amar fora”. - Não está definido porque lhe demos o nome. Amo o que, na minha opinião, tenha uma explosão. - Então vamos fazer de novo. - Agora eu logar no link aqui, - eu pressionar logout e eu não sou. - Não sei. Converti-o de novo como cidades como um demônio local. - E aqui estou eu, - e só para testar que isso está funcionando corretamente. - A ciência é amorosa e usuário e nenhum novo usuário criado e começar de novo. - Verifique se a partir de selecionar estrela de todos os tutor em nosso segredo como o baile, - Eu ainda tenho que usuários. - Então este é o seu login de usuário e sair, - e o próximo passo para nós é começar a criar notas. 9. Como gerar formulários e salvar dados via ModelForms: - nesta palestra, - vamos aprender a criar novas notas e dizê-las para o banco de dados. Até agora, temos modelos e formulários nascidos em Londres, fazemos o que, postando a busca, e aprendemos sobre como salvar dados no banco de dados. - Agora, - usando todas essas ferramentas, - podemos criar novas notas e dizê-las para o banco de dados. - Mas Jackal pode tornar nossa vida muito mais fácil por uma ferramenta que fornece chamado modelo firme moderno - formas são classes muito poderosas, - que combinou o poder da parte de formas jangle e modelos jangle. - Vamos ver um exemplo. - Então é assim que o nosso modelo não se parece. - Ele tem um texto de título proprietário e criar tempo. - Toby capaz de editar esta nota e adicionar uma nova nota do navegador. - Vamos liderar um formulário que tem o texto do título e o campo de tempo de criação. - Nós não precisamos de um proprietário porque o proprietário vai ser definido para o usuário conectado naquele momento . - Então, como você faria isso? - Pelo que aprendemos até agora, - faria sentido criar um novo formulário chamado Norte de e passá-lo de no seu - modelo e mostrá-lo no navegador e editou apenas um bebê em um novo usuário. - O problema com a estratégia é que acabamos criando uma réplica desses campos que - foram especificados no modelo para exatamente uma forma norte deve ter um título, - um texto e criar campo de tempo. - E cada um deles será de forma tão encantada campo, - iniciar cadeira, - sentir para texto e formulário início, - data, - hora, - campo, - campo, - campo de data para criar tempo. - Então isso faz você repetir muito tribunal e tanto que ouvimos falar de jangles. Dr. Princípio, este exemplo não parece segui-lo, mas há uma solução. Jiang que tem uma ferramenta chamada Formulários Modelo. - Eu não pagaria um quarto. Estamos aqui e eu vou dizer que de formulários agitados importam modelo para o que uma forma moderna faz é que ele toma como entrada Ah, modelo e gera um formulário automaticamente. - Então todos esses campos, - o imposto de título e o tempo de criação, - incluindo o proprietário realmente será encerrado pelo Django para você usando este formulário matinal - construct. - Então é assim que você define uma forma moderna e na classe não para ele. - E eu conduzo esta perda ou estendi-a da forma mortal da classe. A propósito, apenas como nota lateral, é assim que se faz herança e luta. - Você poderia escrever um nome de classe, - abrir o colchete, - e então você pode especificar o nome da classe. - Ou você também pode especificar o nome de várias classes em uma lista separada por vírgulas, se você quiser - para herdar de várias classes. - Mas neste caso, - estou dizendo que classe nenhuma forma derivada do modelo para uh, então dentro de que eu tenho outra - classe chamada Meta. - Uma classe meta é geralmente usado para passar propriedades para uma determinada classe. - Então, neste caso, - estou dizendo que esta forma moderna chamada Not From, - vem do modelo chamado Note. Então esta é a nossa manhã de norte, e esta sensação mais informal gerada. Baseado neste modelo de nota, e é isso. - Eu não redefini o título Texan criar sente. - Agora eu vou passar este modelo para a minha visão e do visualizador, - Eu vou passá-lo para o modelo. - Então vamos olhar para Dash quatro filhas. - Thiemo. - Eu coloquei este pedaço de tribunal aqui para encontrar a mesa e a linha na tabela e a coluna na tabela contém um formulário. - O farm é chamado de formulário de nota, - e a ação que o formulário leva ao envio é barra de painel de barra de nó. - O método é colocado e este é o nosso Sierra CS fora de token. - E então eu tenho formado em SP da mesma forma que tínhamos feito isso para o longo informar. - E então eu era alguém, mas não aqui. - E este é apenas o nome do ou exibir fora do botão de cúpula, - dizendo Nova nota. - Vamos apenas focar nesta coluna agora e esquecer esta peça comentada, - é claro, - que virá para um recurso e não, - na minha opinião, - parar. - Mesmo na minha função de painel, - que tinha essas três linhas e eu adicionei rolos vindo, - comentou tribunal aqui. - Mas não vamos nos preocupar com isso por enquanto. Estou passando um novo formulário de nota criando-o aqui em meus contextos de solicitação como o formulário - painel variável no Iêmen Oriental. Estou passando um novo formulário de nota criando-o aqui em meus contextos de solicitação como o formulário - Isso é muito semelhante ao que temos feito no log informar para a vista de índice, - e é por isso que eu não estou digitando o tribunal como vamos e então eu tenho algumas coisas importantes - de modelos que eu importei nota, - e não muito longe. - Então esta é a nossa nova página do painel. - Vamos dar uma olhada em ambos Dash parece quando você aperta para o navegador. - Não, - em vez disso, - desconecte normalmente, - como eu faria para chegar ao meu painel. - Eu só vou usar o painel de controle da barra do euro para chegar ao painel, e eu só quero ver o que acontece. - Mas consegui chegar ao painel. - Eu tenho um formal aqui agora, - que foi processado para o formulário modelo e meu painel de controle, - diz Dashboard Usuário anônimo. Então, se você está se perguntando por que isso é, isso é porque não há nenhum usuário há muito tempo agora. - Mas o nosso painel através deste Ural também é acessível a um usuário não dourado, - o que não é uma coisa boa porque os usuários que não são longos e não devem ser capazes de chegar - o painel de controle. - Afinal, - este é um painel de usuário. - Como podemos consertar isso? - Isso pode ser corrigido exigindo que um usuário faça login antes de chegar a isso você está, - e há uma maneira muito fácil de fazer isso. Em jangle, é chamado de decorador Logan Underscore, então eu estou indo incomum. - Esta linha aqui, - que está no Logan sublinhado obrigatório blogging de parêntesis aberto sublinhado você é igual barra - índice de barra nó. - O que este Linus diz é necessário fazer login para qualquer pessoa que tente acessar a visualização do painel -, - e se a pessoa que está acessando não está carregada, - redirecione-o para o log em seu próprio. - Com neste caso é a nossa página de índice e fora do curso. - Tenho que carregar a importação. - O decorador longo e exigem de django dot contratante não deve fazer decoradores. - Então vamos ver o que acontece agora quando eu tento acessar a página do painel. - Eu tenho sido opressivamente fresco e por suas próprias mudanças para cortar nenhum índice de barra. - O México não é um painel de controle. Então, como você viu, não posso mais entrar no painel. A não ser que eu esteja trancado, deixe que um cidadão use minha senha, bata uma beleza e pressione no meio, e eu estou aqui no painel. - Então muito requer um recurso muito útil do Django, - e poupa muito trabalho de verificar se o usuário está logado ou não - sua visão e redirecionando o usuário. Faz tudo isso por você, então esse formulário parece ótimo. - Este é um título para a nota, - e este é o texto, - e este é um tempo de criação - e eu posso pressionar uma nova nota para criar uma nova nota. - Mas eu também tenho este campo proprietário e que forma moderna tem feito isso desde que o proprietário no - modelo nota é uma chave estrangeira, - forma moderna realmente acessar todos os usuários presentes no banco de dados e preenchido neles. - Informar uma lista de seleção. - Então eu tenho que sentar sem uma fêmea ponto com e sentar-nos fora que espero que eu e não venha aqui - - Isso pode ser um recurso muito útil. Digamos que você tenha uma chave estrangeira em outra tabela, que é a tabela de impostos, que são as etiquetas aplicáveis que você pode aplicar à sua nota. - Isso seria extremamente útil nesse caso, - mas no nosso caso, - isso não é tão útil porque queremos salvar a nota para um determinado usuário. - O usuário que está trancado agora, então não queremos o dedo do pé. Quero que alguém seja capaz de escolher um usuário para salvar uma nota, então devemos configurar nosso moderno para remover de alguma forma este campo proprietário. - Há duas maneiras de fazer isso e eu vou te mostrar uma delas. - O que você pode fazer é você pode ir para o moderno, - parar você eu e dentro da classe meta para a forma norte para a sua manhã de você pode adicionar um - novo combustível frio sente e você pode especificar todas as taxas que você deseja existir em seu modelo - para Então eu quero esse título. - Eu quero o texto e eu também quero criá-lo também criar tempo. - Então vamos ver o que acontece agora eu refresco e o dono sente que se foi. - Este é o primeiro dia de fazer isto. - Mas isso é um pouco complicado porque se eu só quero excluir certos sentimentos que eu não deveria - ter que alistar todos os campos que eu quero ver. Então o que eu posso fazer em vez disso eu posso dizer excluir por aqui e em vez de nomear todos esses campos, eu posso simplesmente dizer proprietário Então eu estou dizendo para me mostrar todos os campos para o modelo de nota. Temos este modelo para ele, mas exclui o campo do proprietário. - Vamos ver o que acontece. - Eu atualizo e o resultado é o mesmo. Não vejo o campo do dono, mas é muito mais fácil. - Morreu apenas um campo. - Então agora temos a configuração Toby capaz de apresentar nenhum novo botão de nota e salvar o formulário modelo - nas baterias. - Então vamos dar uma olhada na exibição do painel, - semelhante à exibição de índice, - dividiram este assunto em duas partes. - Agora a primeira parte lida com o pedido de post e o segundo, - mas permanece o mesmo, mas lida com o pedido get. - Então vamos olhar para a parte mais interessante, - que é a manipulação do post. - A primeira linha é D igual a pedidos que cópia postal. - O que estou fazendo é criar uma cópia do pedido do objeto postado. - A razão pela qual eu estou fazendo isso é porque pedido que posou é uma consulta, - disse objeto e seu imutável, - o que significa que eu não posso adicionar ou excluir algo dele. - E a razão pela qual estou criando uma cópia é porque eu quero adicionar o campo proprietário a esta solicitação - de pose porque, - como você deve se lembrar, - nós excluímos o proprietário do nosso formulário de modelo, - e então nós não temos o informações sobre quem o proprietário fora desta nota seria Então eu estou - inserindo sinteticamente o campo proprietário, - a chave do proprietário com o valor off request user i D, - que é o I d fora do usuário atual que eu criei uma nova instância de formulário fora da classe, - Não forma, que é o nosso modelo para ele. E como argumento, estou passando para o construtor do formulário de nota o Dicionário D, que é uma cópia do nosso pedido fora da postagem com o seu proprietário variável adicional. - Esta é uma má imagem direitos, - nossa forma mortal com tudo o que é pergunta presidente colocado, - que espero é o texto do título e criou a próxima linha de verificação dos formulários válidos. - Se o formulário não é válido, - Eu simplesmente para transformar o modelo de ponto de painel html novamente e eu passei para ele o formulário - instância que eu acabei de criar. - Mas o formulário é válido. - Estou criando um objeto de nota chamando formulário, - não salvar, - mas eu estou passando Cometa igual a cai para ele. - A razão de eu estar fazendo isso é porque a nota contém uma chave estrangeira, - e eu quero definir nenhum proprietário cão para solicitar um usuário que é o usuário atual. - Só então posso dizer o banco de dados de objetos de nota. Então, a próxima linha é, sem dúvida, salva, o que manterá essa nota no banco de dados. E assim que o aviso for salvo, estou devolvendo o painel, tenho você de volta para o usuário. Então, neste momento, eu saberia que deveria estar sendo salvo no banco de dados. E se há um editor no formulário, devemos voltar aos cinemas. - Então isso é testar isso. - Eu só vou atualizar esta página e vamos tentar inserir uma nova nota. - Vamos dar um nome a esta classe. - Não há uma aula de jangle não, e na próxima você vai dizer “Nós amamos aprender jangle “, que eu tenho certeza que todos nós fazemos e colocamos novos dados aqui, e eu vou pressionar uma nova nota agora e ver o que acontece. - Então temos de volta a nossa página do painel. - Mas primeiro ainda precisamos verificar se eles não estão realmente foi adicionado ao banco de dados para - que eu vou para Sequelae Tree e eu vou para uma estrela selecionada de notas sublinhado. - Não cínico e com certeza é bem, - temos esta nota nota de classe jangle. - Nós baixo jangle aprendizagem com a data 13 7 2022 salvo no banco de dados. - Isso é certo. - Mais uma. - Agora temos duas notas ambas as notas de classe geral e gostos diferentes percebem que o - primeiro sentimento que você vê aqui como a chave primária i d para as notas sublinhou nenhuma tabela que - foi gerada pelo próprio Django. O segundo campo é o proprietário, e a ideia do proprietário, neste caso é o número um. - Então vamos ver quem é o proprietário enquanto você seleciona estrela de todos os usuários. - Na verdade, é tudo usuário. - Vejo que há dois usuários. - O primeiro usuário é com chave primária um, - que é cidadão fora do gmail dot com. - Então este é um usuário que nossas anotações neste frio nenhuma mesa tem nariz para. - E isso está correto, - porque as cidades são um demônio ponto com é o usuário conectado atualmente e está adicionando essas - notas. Agora que podemos salvar notas no banco de dados, nosso próximo foco será navegar por essas notas, para poder editá-las e excluir essas notas 10. Introdução aos ModelFormSets: - Na última palestra, - aprendemos sobre formas modernas, - uma característica muito poderosa do jangle que ajuda você a gerar formulários automaticamente a partir de modelos. - Nós também sabemos como salvar novas notas em um banco de dados usando um formulário moderno. - A próxima coisa que um usuário pode querer fazer é editar as notas existentes em um banco de dados, bem como - ser capaz de derrotá-los. - Então vamos ver como podemos fazer isso. - Então, antes de chegarmos a uma solução que não é formular o problema mais claramente. - O problema que estamos tentando resolver é ter um monte de objetos no banco de dados e ser capaz modificar e excluir esses objetos. Há vários veteranos que podemos usar para resolver este problema. - O primeiro padrão pode estar desatualizando ou excluindo uma outra vez, - nesse caso você teria uma linha, - que representa um objeto em um banco de dados. - Um único rolo muitas vezes objeto em um banco de dados, - e para cada um ou você pode ter um botão de exclusão editor ao clicar nele. - Você pode obter um up mortal de diálogo preenchido com os campos para essa função, - e você poderia modificar uma atualização de um objeto de cada vez e Da mesma forma, - você poderia ter um link de exclusão ou botão de exclusão para cada linha em excluir um de cada vez. - O segundo padrão que você pode usar está desativado várias atualizações e exclusão múltipla, - o que significa que você vê uma tabela fora campos credíveis e excluir caixas de seleção ao lado de cada - função e você atualiza várias linhas ou exclui várias funções ao mesmo tempo tempo. - Como podem ver neste ligeiro, temos várias rosas que a Páscoa tem campos. - No nosso caso, - cada uma das estradas será um objeto de nota, - e os campos serão os textos de título e criar tempo. - Digamos que você queira atualizar a primeira nota e excluir o segundo 1, então você selecionaria a segunda nota verificando a coluna de alívio de acidentes, e você editaria os campos da primeira estrada, e então você simplesmente pressionaria Então você está excluindo a segunda nota e atualizando o - 1st 1 ao mesmo tempo. Este é um padrão bastante comum, que está gravando em muitas aplicações. Agora, se tentarmos implementar isso nós mesmos, da primeira maneira ou da segunda maneira, pode ser muito tedioso. - Por exemplo, - para implementar a atualização múltipla e excluir importado. - A primeira coisa que você faria é buscar todos os objetos do seu banco de dados que é todas as notas - e enviá-los para o lado do cliente no lado do cliente. - Você iria ler através de cada um dos objetos, - e você iria gerar HTML. - Alternativamente, - se você estiver usando jangle, - você também pode buscar todas as notas do banco de dados e qualquer tentativa. - Você pode ter quatro loops para que você gere o HTML para cada uma dessas linhas no servidor - lado em si e, em seguida, questi HTM no lado do cliente. - Então, no caso de você estar usando modelos, - você provavelmente teria um quatro fazer quando você é uma negociação sobre todos os objetos de nota para isso - usuário e gerar os campos para cada uma das estradas para objetos Notre. - Agora você é exibido a etapa que ou esses campos dentro de um formulário no lado do cliente e - seu cliente pode editar esses campos. E então ele apertaria o botão de atualização, que faria um formulário de cúpula, caso em que você recebe no site do servidor. - Muitos campos para muitos rosa, - todos eles podem ou não ter sido atualizados, - e você teria que manter um drive fora de qual off? - Estes foram atualizados em quais deles foram marcados para exclusão. - Isso é muita lógica para implementar sozinho. - E esse é o problema que conjuntos de formulários e conjuntos de formulários modernos vendidos para você. - Você faz uma boa maneira de pensar sobre conjuntos e conjunto de formas modernas. - É semelhante à forma como pensamos sobre formas e mais formas. - Então, - forma moderna disse é para uma fazenda, - disse o que é uma forma moderna. - Ainda longe um farm e um moderno de operar em uma única instância fora do objeto de banco de dados, - enquanto uma forma moderna disse em um conjunto farm operar em várias instâncias. - Formas tão modernas que realmente opera sobre o resultado off, - disse uma consulta. - O que significa que quando você faz uma consulta no banco de dados, - por exemplo, - recuperar todas as notas para um usuário. - Este não fazemos o seu conjunto de consultas. - E sobre isso, - Kuwaiti disse, - você pode criar um conjunto de formulário modelo na criação de um conjunto de formulário moderno em uma consulta disse. - Não só seremos capazes de renderizar os objetos retornados por esta qualidade dito no navegador - na forma da tabela. - Mas também seremos capazes de atualizá-los e excluí-los ao mesmo tempo modelo de sete - provedores e ferramenta extremamente poderosa, - o que nos salvará de escrever um monte de lógica para renderizar vários objetos em um formulário em - um navegador, - bem como atualizá-los e marcá-los para deliciosos. - Isso é exatamente o que você quer fazer com os objetos não. - Queremos que o usuário seja capaz de ver os objetos de nota na forma de uma tabela, - ser capaz de modificá-los ou marcados para exclusão e, em seguida, apresentar botão de atualização, - que irá modificar as notas modificadas ou excluir as que estão marcadas para exclusão -. - Na próxima palestra, - vamos passar por algum código, - que nos mostrará como usar o moderno a partir de sets. 11. Como atualizar e excluir objetos por meio de ModelFormSets: - então não que tenhamos tido uma introdução aos conjuntos de formas modernas. Vamos dar uma olhada em algum tribunal, que nos mostrará como podemos usar a forma moderna de Eus para atualizar e excluir vários empréstimos. - Ao mesmo tempo, - a espada requer uma mudança na visão do painel, - como há um modelo de painel. - Então vamos olhar para a vista do painel primeiro. - Eu tenho aqui substituir a vista do painel por um método de função. - Sublinhado do painel. - Velho Eu simplesmente renomeei o Painel Antigo importava, - e eu escrevi um assunto de visualização completamente novo, - que é significativamente menor do que o último. - Então vamos tentar entender o que está acontecendo neste novo método de painel. - Então, a estrutura deste método é semelhante ao último em que é dividido em duas partes. - A parte que lida com o pedido de post e a parte que centenas para obter parte do - pedido. - Então vamos dar uma olhada na parte que lida com o pedido do gato. - A primeira coisa que eu estou fazendo nessa parte é que eu estou criando um formulário, - disse Object, - que é uma instância fora forma norte disse. - Então vamos tentar entender o que uma nota forma que está no início da função. - Importei uma chamada de símbolo de uma fábrica. Já lhe disse o que são os conjuntos de formas modernos, mas nunca falámos em conjuntos agrícolas de linha. - Então, o que estão em linha para transtornos em conjuntos de formulários de linha são uma obstrução em cima do modelo de - conjuntos, - e eles serão usados em situações em que o modelo contém uma ou mais chaves estrangeiras em nosso - caso, - ou usando o modelo de nota, - que contém uma chave estrangeira para o modelo de usuário. - É por isso que vamos usar em conjunto de formulários de linha, - porque isso vai tornar a vida muito mais fácil para nós, - e você vai muito em breve ver como assim quando eu estou criando este novo tipo de nota de chamada, - formulário disse, - e notar que é um novo tipo Eu estou usando esta chamada método em formas de linha de fábrica, - que é uma fábrica importada. - Ele leva o primeiro argumento como a chave estrangeira, - que é o usuário, - e o segundo argumento é o não o modelo em si. - Isso é porque eu estou tentando criar em forma de linha, - disse que ele direto através de todas as notas. - Para um certo usuário, - o terceiro argumento é pode política verdadeira, - o que significa simplesmente que eu quero apoiar o galego fora desses objetos na minha forma - e o quarto argumento é extra igual a um agora. - O que isso significa é que digamos que os centros de usuários são que o Gmail dot com tem cinco notas no banco de dados. - Então minha fazenda disse que meus formulários em linha que vai me mostrar todas essas cinco notas, - permita-me pisar, - editá-los e conduzi-los. - Mas vai me mostrar uma linha extra que é denotada por este extra é igual a uma questão. - E a razão para esta linha extra é ser capaz de adicionar novas notas do mesmo formulário. - Então você se lembra como nós criamos um novo formulário chamado Formulário de Nota, - que era um formulário moderno antes em nosso antigo método de painel, - para ser capaz de criar novas notas e adicioná-las ao banco de dados quando estamos usando na linha de - set ou conjuntos de formulários modelo, - não precisamos mais fazer isso. - As formas modernas que irão fornecer essa funcionalidade para nós também, - assim não só pode ser atualizar e excluir existente sabe que também podemos criar novas notas apenas por - usando moral de conjuntos. - Então agora que sabemos o que uma nota se forma , - isto é, - estamos criando uma instância das formas Norte nesta linha, - e estamos passando para sua instância. - Pedido pedômetro, - não usuário. - Esta é uma luz muito interessante e poderosa. - Ele está criando um conjunto de formulários que irá conter todas as notas em seu banco de dados. - Mas como é fazer isso em uma única linha? Então pense no que está acontecendo nesta vida. - De alguma forma a nota forma que é, - recuperando todas as notas para o usuário conectado, - que é solicitado usuário que ele está criando um antigo deles. - E está criando campos para cada função, - que representa um objeto não. - Esta é alguma coisa realmente poderosa acontecendo em uma linha e uma vez que estamos usando um on-line - conjunto fazenda e em forma luz disse sabe o que as relações chave estrangeira são porque nós - fornecer-lhes no primeiro e segundo argumentos como usuário e nota, - ele sabe que os usuários de chave estrangeira que está sendo usado no Norte ele vai buscar pela - chave estrangeira. - Todos os objetos de nota do banco de dados para esse usuário que está sendo passado instância é igual - porque não usá-la e ele vai criar o formulário automaticamente para você. - Tudo o que você precisa fazer agora é pastores Farm definido para o seu modelo e deixá-lo render-se Então eu estou - usando este novo método aqui chamado Render para responder para criar um modelo e renderizar - ele Este é simplesmente um atalho jangle e não deve ser nenhuma surpresa que é importante - a partir do jangle não curto pacote de mercadorias renderizado a resposta. - Então o que fez uma resposta faz é tudo o que é feito nas linhas aqui. - Ele cria um novo modelo usando o carregador simplesmente porque eu especifiquei o nome da tentativa - aqui. - É preciso um monte de palavras em um dicionário exatamente como eu passei variáveis no meu - contexto de solicitação, - e eu posso possivelmente procurar contatos para ele também. Então, ao invés de usar essas duas linhas aqui, posso simplesmente condensar todo esse código usando uma renderização para responder. Então é isto que vou usar a partir de agora. - Mas realmente, - o efeito fora desta linha é exatamente o mesmo que fazer um modelo é igual a um modelo de ponto carregador -, - criando um contexto de solicitação e enviando de volta em uma resposta CTB. Quando você está escrevendo um tribunal sério, você vai se encontrar usando respostas muito mais. - Então, isto conclui a nossa revisão fora do tratamento. - Receba pedidos para o assunto do painel. - Agora vamos dar uma olhada no post no post da minha primeira linha também cria uma nota, - forma disse. - Mas em vez de passar instância é igual a solicitar um usuário. - Estou passando. O que quer que eu tenha recebido do pedido postado, - o primeiro argumento é solicitado posado. - O segundo é arquivos solicitados no nosso caso, - porque os arquivos realmente não têm nenhum significado. Mas digamos que você é um formulário, mas os usuários podem enviar um monte de fotos. - Nesse caso, - essas imagens serão contidas e arquivos solicitados, - e o terceiro argumento é uma instância igual a solicitação no usuário. - A próxima linha verifica se os formulários que é válido para que ele vai fazer toda a validação. - Verifique exatamente a maneira que você faria eles em uma forma moderna ou um avião ou forma. - E se o formulário é válido, - é simplesmente chamado, - disse a empresa, - não salvar método depois de chamar formulários que não salvar toda a uma base que o usuário tinha feito - na fazenda. - No modelo, - quaisquer exclusões ou notas que o usuário marcou para exclusão e quaisquer novas notas que o - usuário adicionou seriam automaticamente persistidas no banco de dados. - Este é o desligamento dos conjuntos de formas modernos. - Agora vamos dar uma olhada na própria tentativa e ver o que mudanças temos que fazer um - painel ou STM a. - Então só notei que eu estou passando minhas fazendas que objeto como um perímetro modelo no meu Get - Meu Post de Acela. - Então este é o meu novo dashboard dot html. Este lugar permaneceu o mesmo, mas criei um novo formulário aqui. Ainda é chamado de formulário de atualização de notas que ainda não custa e na maior parte da Europa, notas de barra. - Painel de controle da vida. - E aqui está a minha ficha de pedido de falsificação dentro da fazenda. Em vez de ter um novo formulário de nota em uma mesa, eu simplesmente tenho este quarteirão fora do tribunal. - A primeira linha neste tribunal contém em chaves, - forma disse sublinhado gestão de pontos, - para esta linha é necessária porque modelo de conjuntos usar algo chamado uma empresa de gestão - que gerencia todo o radar presente em seu formulários. - Por exemplo, - quantos sentimentos totais você tem em tal? - A próxima linha é um loop para ele negociando sobre as formas de si mesmo, - e ele vê para cada forma ou para cada presidente forma da forma disse. - E você pode pensar em um formulário como uma única nota ou uma única linha em seu banco de dados. - E da próxima vez apenas colocando para fora todos os campos que estão em meu Senhor, - o primeiro 1 é formado que I D, - que na verdade não será renderizado na fazenda porque é um campo auto. - O segundo é formado um título, - em seguida, o formulário, - o texto eo primeiro criar tempo. - E finalmente, - Eu me formei na liderança aqui, - que na verdade irá renderizar como uma caixa de seleção - que eu posso marcar para excluir um papel particular. - Lembre-se que um nó representa uma nota e então eu não terminei quatro tags e finalmente eu - me tenho no botão com o valor da atualização, - e essa é a minha forma. - Isso é tudo que eu preciso fazer para poder editar e excluir várias notas, bem como em um novo - um. Agora que temos todos esses encanamentos no lugar, vamos ver como é o espaço. Mas tenho certeza que até agora todo o sentido caiu como mágica para você. - Então vamos ver como nosso painel novo e melhorado parece no navegador. - Então eu vou bater nas notas de euro, - barra painel e a loja parece que eu tenho esta nova fazenda que contém o título de - minhas anotações, - e ele contém o texto das minhas notas. - Lembra-se que tínhamos duas anotações. Uma era que estávamos aprendendo sobre o tango sobre formas modernas, e a segunda estava abaixo do jangle de aprendizagem. - E então eu tive um tempo de criação associado a essas duas notas. Posso ver estas duas notas na base de dados, e tenho uma linha extra em branco aqui. - Então você deve se lembrar que extra é igual a um perímetro. - Deixe-me voltar para isso aqui. - E esta é a parte que causa este extra alinhado ainda aqui. - Então, se você quiser ver como é fácil adicionar uma nova nota? - Agora vamos adicionar uma nova nota que é chamada de classe jangle. - Não vamos ver. - Os conjuntos de formulários são muito poderosos. - Vamos colocar uma data aqui e atualizar. Acredite ou não, esta página acabou de ser recarregada. E agora eu tenho três notas no meu banco de dados e se você só quer mais provas disso, vamos bater no “Você é um painel de controle “de novo e isso é o que eu recebo e tenho essa linha extra agora e este é o meu novo Nord. - Agora, - se você quiser jogar com delicioso, - vamos começar com a liderança o 1º 1 que diz Estamos aprendendo sobre formas modernas Press - atualizar e ele se foi. - Agora vamos adicionar outro Senhor que eu vou chamar de classe geral ou três que eu vou salvar velhos conjuntos de informar que parecem mágicos. E só por conveniência, eu estava apenas eu estava apenascopiando e colando a data daqui e apertando um encontro. - Agora tenho três notas. Vou mudar o texto para a nota, que é mais informativo que parece mágica para modelar a França funcionou como magia. - E eu vou deletar a segunda nota que o título do qual é a classe Django não - para. - Então eu estou fazendo essas duas ações ao mesmo tempo e eu pressionar atualizar a classe jangle não fazer - se foi. - E a minha explosão de jangle não. Os conjuntos modernos de três dizem funcionaram como magia. Espero que tenham testemunhado agora qual é o poder dos conjuntos de formas modernas, e, em geral, sobre o poder dos modos do Django que ele pode deixar você fazer uma insanidade tão complexa, para a qual geralmente você teria que escrever um bloco grande, - é claro, - e alguma lógica muito complexa para gerenciar todas as taxas que estão vindo em seu pedido são - opostas e lembrar o que precisa ser atualizado, - o que precisa ser excluído e, em seguida, executar isso corretamente no lado do banco de dados também. - Os mortais de Jang Go estão ajudando você a evitar escrever qualquer fora da quadra e fazendo isso - para você de uma forma muito, muito simples e intuitiva. - Uma vez que você quer escrever mais dois ou três água dos exemplos, - será muito mais intuitivo para você. 12. APIs REST no Django via TastyPie: - Oi. Como chegamos aos eleitores finais dos resultados, falaremos sobre algo chamado “Descanse e Testemunhe”. Agora, antes de entrarmos em Tasty por, vamos parar um pouco de descanso e por que o descanso é necessário, então o descanso é abreviado para transferência representacional do estado. Este termo veio de um artigo que um dos estudantes, um estudante de doutorado, trouxe de volta provavelmente dois mil para a sua visita. - E tornou-se muito famoso porque dá um conjunto muito coerente de diretrizes e regras para programar algo chamado Arrested aqui, que é uma forma de acessar recursos remotos e atualizá-los ou excluí-los através da Internet. - Então, em nosso aplicativo de notas, - nós temos uma página web que faz acesso ao recurso remoto é, - no nosso caso, - o recurso sendo nota ou as notas em si, - e nós atualizamos e lemos notas, - e nós estamos não usar nenhum descanso. - Então, por que precisamos descansar? - Bem, há algumas razões. - Pense em alguém usando o aplicativo de notas em uma interface de vidro do Google e obtém uma interface de vidro do Google. - Você provavelmente não precisa ou não quer mostrar ao usuário exatamente o que as notas se parecem - como porque a interface para isso seria inutilizável em algo como o Google Glass. - O Google Glass provavelmente tem uma camada de interface de usuário diferente que gostaria de apresentar sabe - em uma coisa completamente diferente, - talvez fornecendo uma interface de toque e da forma como nós o projetamos. - Com simples um texto fumegante, - caixas podem não ser incapazes de algo como o Google Glass. - Então, uma coisa que você pode fazer neste caso é em vez disso fora, - renderizar as notas em uma página da Web simplesmente fornecer as notas como dados brutos. - Então, em vez de mostrar uma página HTML com o conteúdo das notas. - Quando alguém quer que eles não são, - você pode apenas fornecer como um fluxo de dados e os dados podem ser incluídos em algo como - XML ou Jason. Então é isso que todos os casos de uso, os outros casos de uso. Digamos que alguém queira implementar uma mortalidade mais avançada nas suas notas. - Por exemplo, - algum tipo de análise de linguagem natural ou digamos, - o APP notas está sendo usado por alguém como um corretor de bolsa que está colocando relatórios financeiros - informações no Norte, - e outra pessoa quer para escrever de serviço para acessar as notas e cavar ou - digitalizar essas informações financeiras. Estão tirando essa informação do Norte, mas nossas anotações não fornecem isso. Estão tirando essa informação do Norte, - Então o que podemos fazer é apenas fornecer as notas para este outro serviço que quer raspar os - dados na forma de dados brutos em vez de expor uma interface de usuário. - Então, em tais casos, - quando temos que fornecer dados brutos, - é muito útil usar a interface de descanso porque é algo que é universalmente - aceito em aplicativos. Saiba como receber dados da sua prisão, e é muito mais intuitivo para eles. - E uma vez as interfaces de prisão forneceram muitas aplicações muito fora. - Outros dragões podem ser usados para acessar seus dados e brincar com esses dados. - Então é por isso que menos é muito útil. - Podemos fornecer uma única interface de descanso que diferentes dispositivos móveis ou laptops ou - navegadores ou qualquer tipo de dispositivos podem vir e acessar. - E uma vez que estamos expostos, - nossos dados na forma de descanso - muitos serviços podem usar nossos dados e utilizá-los para fins que nosso serviço não - certo ainda, - Então nos tornamos uma espécie de provedor de dados. - Então, a transferência representacional do estado é uma arquitetura moderna para acessar ou modificar as fontes através da Internet. Há alguns princípios principais dessa filosofia e um muito importante e está sendo apátrida. - Então o servidor deve ser apátrida, o que significa que todos os pedidos próximos ao voo devem ser independentes de qualquer pedido anterior . - Não deve depender disso. - Ele deve conter todos os dados que são necessários para processar seu pedido, - e outros princípios importantes é descontar. - E o servidor deve estar marcando qualquer recurso como capturável ou não casual. E uma vez que o recurso é montanhas capturáveis, o cliente que pode ser o navegador do dispositivo móvel, tem autoridade teatral para descontar os dados no lado do cliente ou esse recurso no lado do cliente . Há outras coisas importantes sobre o descanso que você pode ler neste jornal, que eu coloquei nas referências no final, e eu recomendo que você leia. - Então o que é saboroso por testemunhar este jangle up, - que pode ser instalado no jangle, - e ele nos fornece a maior parte do encanamento para fornecer uma API de descanso I para que nós não temos que fazer ou - implementar essa lógica para escrever você é mais, - que são que pareciam uma interface de descanso em fazer recurso está fora de nossos modelos ou - recurso de autorização é para o acesso a diferentes corpos. Então essas são algumas das coisas que gosto, se eu fizer por você e também em tribunais seus recursos em Jason ou excelente para você. - Então qualquer modelo de jangle que você tenha escrito, - por exemplo, - a moral norte ou o modelo de usuário que você pode expor usando testemunhar como um restaurante, - uma frase que torna saborosa por muito útil, - porque você fica longe de escrever euros separados - para o seu recurso é e você ficar longe de escrever e incluindo camada em Jason ou - externo para o seu recurso é. Então vamos dar uma olhada no que é necessário para preparar um testemunho. - Então eles instalaram um I íngreme na maioria dos sistemas baseados em UNIX. - Deve ser fácil o suficiente. - Você poderia apenas fazer pip instalar Django hífen, - torta saborosa, - e eu forneci o link de, - mas você pode baixar testificar no Windows dois. - Não deve ser muito difícil uma vez que você não sabe o saboroso pelo código-fonte. - Você pode correr, - lutar, - configurar topo, - e se você tiver algum problema com isso? - Ficarei feliz em ajudar. - E depois de instalar o depoimento, - você também precisa do dedo dos dados instalado abs e suas configurações para cima. - Você eu arquivo para as notas acima e adicionar testemunhar o testemunho corda para instalar ups para que eles - stick A é na verdade apenas um aplicativo jangle que lhe fornece várias funções. E finalmente, você precisa fugir, lutar em Manus. - Pare as pessoas na TV sincronizada. - Então você precisa executar cantar db como você correr para outras tabelas quando tínhamos um novo modelo. Espero que se lembre que toda vez que adicionamos um novo modelo ou um modelo de dados, temos que correr o Sing DB para pegar nossas tabelas de banco de dados e afundar com nosso almoço de bicicleta. - Django, nossos modelos. - Então, novamente, - tortas saborosas uma aplicação. E uma vez que ele instalou aplicativos, ele criará um par de tabelas para você, que serão suas próprias mesas de limpeza e militar e solteira para isso. - Estas são algumas referências. - E agora vamos olhar para alguma comida e ver como podemos converter notas em recursos é - que são acessíveis, - ser preso. Já escrevi este código, mas não há muito a corrigir, por isso vou rever. - Então o primeiro lugar que precisamos modificar é nosso modelo te parar. - Eu arquivo para o aplicativo Norte Então absoluta barra norte slash modelos DePuy e adicionaram - algumas linhas aqui. - Então a única coisa que eu estou fazendo isso eu estou expondo meu modelo de nota como uma fonte de partido saboroso recurso - - Então incluídos estes dois pacotes aqui testemunhou ou autorização e algo - chamado um recurso moderno, - que é um dos pacotes principais ou classes principais. - E eu criei uma nova classe chamada No Resource, - que se estende ou herda de recurso modelo dentro que eu tenho uma classe meta e isso - consulta disse membro da classe média contém ou é atribuído a. - Não que objetos são todos, - o que significa que ele terá acesso a todas as notas não são objetos. - Então, como você se lembra, - também, - você pode se lembrar dos objetos que todos importam fora. - A linguagem de consulta jangle irá basicamente recuperar todo o objeto do banco de dados. - Todos os objetos de nota do banco de dados assim atribuído toe sair, - disse ele. - Esta consulta e isso é para deixar o recurso Morning ou o recurso de nota saber como obter - todas as instâncias de nota do banco de dados que eu dei a ele um nome de recurso. - Nota de chamada. - Mas você não precisa dar esse nome de recurso por padrão. Testemunhar gerará um nome de recurso e, neste caso, gerará. - Nós sabemos. E, finalmente, dei-lhe uma nova autorização. - Instância. - Este é o momento mais básico de autorização. Mas na prática, quando você está fazendo essa operação, você deve usar uma autorização mais sofisticada. - A classe vai testemunhar, - então não há dúvida de objetos que são todos designados para consulta, - senhor, - é realmente como não há recurso sabe antes é o recurso que ele está expondo - gerenciando. - Então, uma vez que tenhamos feito isso, - vamos até você parar você que há algumas mudanças e você é uma parada. - Você primeiro. - É que eu sou importante. O pacote do FBI ou o módulo AP I do piloto saboroso, FBI e segunda licença de um importante recurso de nota, que acabamos de criar Next. - Eu atribui à variável V um sublinhar a p I uma instância de classe A P I e dado - uma distração ou nome mesmo. E então eu tenho essa linha, até mesmo um piano registra nenhum recurso. - Então eu estou registrando um novo recurso com um novo P. - Eu chamei até mesmo um P I. - Agora, finalmente, - Eu adicionei aos meus euros que as pessoas arquivaram esta linha. Qualquer coisa que comece com f B, eu deveria ler o dedo direito até mesmo sublinhar AP. - Eu não te faço os nossos papéis e vamos sublinhar ap. - Eu não Urais são alguns euros que estão sendo gerados por torta saborosa para você e nós gostaríamos - apenas ver uma demonstração de como isso é feito e isso é tudo. - Você não precisa fazer mais nada e vamos ver qual será o resultado disso. - E para lembrar as pessoas de corrida geriam gelo Devi. - Então, quando eu tinha executado cantar d B, - isso é o que BB tinha dado para mim como a saída ex criando duas novas tabelas saborosas por - sublinhar acesso ao FBI e torta saborosa sublinhar uma chave Stacy que eu estaria usando para sua própria - limpeza. - Então, por favor, lembre-se de executar o degrau. - Vou parar o meu jantar e agora vou aceder a um euro. - Agora você tem 11 anos. - Acessando host local Colin 8000 notas barra barra ap I cortar todos nota barra. O ponto de interrogação anterior é igual ao Jason. - Entra e vê o que temos aqui. - Estamos conseguindo informações meta. - Contagem total. - Isso significa que temos que anotar aqui e então nós estamos pegando objetos e isso é tudo Jason - codificado. E há dois objetos aqui porque temos duas anotações em nosso banco de dados, e eles são todos os campos para saber o tempo de criação. - O que eu poderia sentir o recurso que você é ou é como acessar este objeto de nota específico. E há alguns textos que adoramos aprender Jangle e Jangle Classman, e você faz essas anotações porque temos que não no banco de dados. E isso é tudo que você precisa fazer para expor anotações ou qualquer outro recurso com depoimento , claro, você precisa fazer mais algumas coisas, como isca, suas configurações de autorização. E se você não quiser expor alguns, parece o que eu sentiria, e você pode colocar na lista de extrusão para o seu recurso e testemunhar não vai expor este campo. - Então, para isso eu posso apontar para o tutorial, - que está na verdade nas referências na apresentação, - e você pode ler É muito simples dois ou três passos tutorial off saboroso pie on. Eu realmente ajudo você a ir junto com seus prédios. - Descanse um PS para expor seus dados. - Então vamos tentar recuperar uma nota específica. - Então o que eu vou fazer é dizer sem barra ap slash b um nó barra barra 6, que é a idéia fora não estão em nosso banco de dados. - Ponto de interrogação para o médico Jason e eu só recebo isso não desta vez o nó específico e eu - não entendo isso é apenas para obter o comando, - mas eu também posso postar dados de atualização, - e eu também posso usar colocar, - que é biqueira semelhante. - Mas na verdade é bem diferente. - E há muito debate na internet sobre quando devemos usar em uma cidade? - O pior das pessoas? - Http colocar. - E uma das diretrizes que você pode seguir para descobrir isso é se você está executando um comando - ou acessando ou atualizando um recurso de tal forma que bater que você é várias vezes - não vai mudar o resultado ou torná-lo diferente, - e depois acertar o Ural só uma vez. - É um exemplo disso pode ser atualizar um campo para um valor específico. Então, por exemplo, se você está atualizando sua se você está atualizando suadata para a data de hoje, então isso é um exemplo fora, eu impotência, o que significa que você está data para a data de hoje, então isso é um exemplo fora, eu impotência, atualizando o tempo de criação para UH, - 21h. Em 1º de janeiro de 2030, você pode continuar fazendo essa operação novamente e novamente. - O tempo de dados permanecerá sempre 9 horas 1 de janeiro de 2013 Uma vez que você atualizou pela primeira vez -, - em oposição a digamos que você está implementando a data toda vez que você está atingindo o - euro. - Então vamos ver. - Inicialmente, - é julho 27 2013 e você implementou os torna-se 28. - Então ele instrumentou novamente e se tornou 29. Então, neste caso, essa operação é uma operação que muda o recurso toda vez. - Nesse caso, você deveria usar opositores. Então isso conclui nossa discussão sobre lição de testemunhar, e espero que ache isso útil porque eu certamente acho 13. Django na produção, cache, dimensionamento e outros tópicos: - Oi. - Chegamos à conclusão desta aula na palestra espinhal estão se recuperando alguns - tópicos que deixamos nosso e eu acredito que eles serão úteis para você. - Então vamos começar. - Vamos falar um pouco mais sobre a linguagem de consulta jangles. - Vimos as coisas mais simples que podemos fazê-lo a linguagem de consulta. - Mas há algumas operações mais complexas que começam para você também. - Por exemplo, - há um filtro cruzado usando o que enfraquece fazer pesquisas como Find Me all the North Officer - título começa, mas emaranhado. - Então o que ele faria por isso é a primeira linha aqui. - Slide, - sem dúvida. - Objetos filtrados com o título Sublinhado começam com ângulo igual. - Isto é semelhante este usando um desgaste roupas e sequela. - A segunda linha diz que nenhum objeto de tom é tudo e entre parênteses dourado. - Cinco. Isso é usado para usar a cláusula limite cinco na sequência, que significa que você está limitando a saída ou o número de registros que você está lutando. - 25 Então há outro exemplo de nota em objetos de filtro revere passando. - Criar tempo. - Sublinhado, - Sublinhar It e Healthy Eastern para menos do que igual dedo do pé. - Da mesma forma, - você pode maior do que igual toe outros operadores. - Então, se você está procurando por todos os sabe que eu fui criado antes ou na data 13 7 - 2023 você estaria usando isso. - E isso é semelhante usando uma declaração de sequela. - Então vamos começar a partir de notas, - não onde criar tempos menores que igual a 2037 23. - Você contém vários filtros juntos para que você possa filtrar uma consulta, - e, em seguida, você pode aplicar mais filtros na consulta de filtro. - Com o seu chamado Filter Training, - você pode usar a ordem sublinhada pela cláusula também, - e isso é semelhante à ordem por uma sequência. - O sinal de menos no nome do campo indica que você deseja ordenar decrescente para ter um segredo -. - Como agregações, como uma contagem máxima. - Você pode usar o fechá-lo como Notre Objetos são todos não agregam e, em seguida, passando a - função, - como Max em média e o nome do campo que você deseja concordá-lo. - Da mesma forma, - você pode dizer não, - ou objetos são todos. - Não conte para fazer um conselheiro seleto off sequela. - Finalmente, - quando você está enfrentando algumas consultas realmente complexas, - você sempre pode usar a função de sequela bruta, - que pode ser usada dizendo modelo que é, - nenhum objeto está errado e passar é sua perda igual como uma string, - assim você sempre pode cair para trás em Ross igual e ainda usar alguns aspectos de jangles quente, - como obter as estradas traduzidas diretamente em objetos enquanto usando cruz igual. Falei um pouco sobre inclusão tentada e herança, mas nunca te dei um exemplo de como usá-la. - Então vamos olhar para um exemplo fora da herança temperada agora e também passar por - alguns dos conceitos básicos de inclusão de modelos. - Então, se você está tentando dar ao seu site uma aparência consistente, então você pode ter um cabeçalho e um rodapé para uma página, e você tem uma dor de oeste ou menos dor também. - Em tais cenários, - você não quer replicar este frio para o pé cabeçalho estão descansando a Espanha em cada um - suas páginas. - O que você pode fazer é escrever um modelo base, - e então você pode herdar seus modelos da cintura para cima, - e como você pode fazer isso é por em extensões ST, - baseado em HTML em chaves e símbolos de percentil em cada um dos Dr So que está olhando um exemplo. - Eu não teria um modelo simples aqui chamado Baseado no Leste do Iêmen, - que continha algumas as tags HTML básicas em. - Eu também incluí a folha de estilo aqui, que eu vou entrar muito em breve e dentro disso dentro do corpo deste artista baseado ele - e há um cabeçalho, mas diz que ele também anota, - e há um bloco de percentil conteúdo do espaço. - O Bloco Negro é um templo Jangle. - Palavra-chave e conteúdo é apenas uma palavra que estou usando para indicar que algum conteúdo passa por lá. - Mas você também pode chamá-lo. - Pode chamá-lo do que quiser. - Você pode chamá-lo de meu conteúdo, - seu conteúdo e finalmente eu estou terminando o preço do bloco em bloco. - Então, o que acontece quando eu estender outro modelo baseado no CTM? - É que tudo, exceto para estes blocos fecha vem através e então eu posso, - na minha tentativa direta implementar estes blocos fecha para que o conteúdo da base ou leste - bloco humano será substituído pelo bloco de conteúdo fora da unidade. - Então vamos dar um exemplo concreto nas anotações. - Pode-se imaginar que painel de controle ou html e algumas outras páginas exigiria Ah, - cabeçalho e rodapé. - Então o que eu fiz no painel ou HTML é que eu estendi a partir da equipe de histórias base de - despejando, - então eu usei sua declaração de extensão aqui, - o percentil da chave curly estende-se basicamente a vapor. - E depois disso, - Eu tenho conteúdo de espaço de bloco de percentil encaracolado assim como à frente no modelo base. Mas agora, dentro do conteúdo, eu realmente tenho algo. Eu tenho todas essas coisas que estavam acontecendo antes no Dashboard Oresteia, - E então eu não tenho em bloco. - Vamos ver qual é o resultado disso. - Então nós vemos isso as notas impressionantes maçã aqui. E se fores para o rodapé, vemos os dois Ling sobre nós e bloqueamos. - Se você quiser ver o mesmo na sua página de índice, - você pode fazer isso também. - Então deixe-me sair. Então agora você não vê minhas notas incríveis e os links na página de índice que eu vou copiar e colar a extensão da tentativa no paciente índice e aqui está. - Agora você tem o incrível Não toque no cabeçalho e um rodapé na próxima página também, - assim da mesma forma, - você pode estender todas as páginas que você quer um cabeçalho e rodapé Irã de seu basicamente - vapor tentou. - Agora houve mais algumas mudanças. - Aviso humano no painel, Bates. - Então vamos passar por eles. - A única coisa que você deve ter notado é que eu mudei a sensação de texto para uma área de texto de uma - entrada de texto. - Isso é porque este é o Tex e pode ser um monte de impostos, - então o usuário pode querer olhar para ele como uma área de texto e como podemos fazer isso. - Se você se lembra, estamos usando conjuntos de formulários modernos. - Isto parece assim. - O que você pode simplesmente fazer é quando você está criando seu conjunto de formulários modelo, - você pode forma positiva, - que será o nosso modelo. - A partir do que tínhamos escrito antes, - estávamos usando mais reformas que assim para mim na luz forma uma fábrica e passando o outro - argumento chamado forma. E estou passando o formulário de nota de classe, que é minha forma moderna, que eu não usei em algum momento quando eu não estava usando água do set e para a minha forma de nota. - Eu estou passando este novo argumento widgets na instância ou na classe média e o que eu estou - dizendo qual é que para o campo de texto fora do meu modelo, - Eu quero usar uma área de texto de visita especial e os atributos de uma área de texto são 60 colunas - e 10 linhas. - E essa é a razão pela qual você está vendo este vídeo de texto aqui. Finalmente, você deve ter notado que há uma borda preta em torno de suas entradas de texto , e , uh, botão mudou um pouco por dentro. - É mais branco e tem um imposto azul sobre ele chamado atualização. Então, para isso, estou usando um CSS. - Obviamente, - isso não é muito bonito, - mas este é apenas o tempo fora alguns CSS básico fora usando o emaranhado. - Então eu tenho escrito fora CSS Arquivo Norte Ordenar CSS dentro de um diretório chamado Static Inside of - Notas. - Então não cortar estática no ano passado diz diretamente não tem tipo CSS, - ea parte interessante é uma configuração até o seu arquivo I e como temos que mudar isso. - Para poder usar o CSS. Se você olhar em base ou html, estou usando sublinhado estático você está doente. - O benefício de usar o estudo sublinhado você é servir arquivos estáticos ou apontar para arquivos estáticos é que eu não tenho Você tem que usar parte exata aqui. - Eu não tenho que dizer nó barra barra estática barra CSS barra nenhuma coisa CSS. - Eu posso simplesmente dizer estática sublinhado Europa e Jangle saberia onde obter a estática - você está fora do arquivo estático. E como Jang, quem sabe sobre isso é o meu específico. - Algumas coisas nas configurações do seu arquivo. - Então a primeira coisa a colocar aqui é duas declarações Importar OS e eu acabei criar uma variável chamada Based E I R. que é um diretório base, que será o diretório no qual minhas configurações são mentiras purificadas. - E este meu depoimento vai me dar o diretório base. - Agora, - se você for um pouco mais longe, - minha estática, - você é uma lista última estática. E então eu adicionei, essa entrada nos meus arquivos estáticos sublinhou o dobro do IRS, que é sempre a parte ou participar. - Então eu estou me juntando a IR ocupado com notas menos estáticas. Estou dizendo ao Jangle que são meus arquivos estáticos. - Deite em todas as entradas dentro de arquivos estáticos sublinhado o IRS, - e uma das entradas é em basicamente I r barra notas barra diretório estático e mais ocupado - barra No. - Então estático tem um diretório CSS, - que tem C S nenhum arquivo Socso. - E é por isso que eu estou usando estática sua própria aqui e o diretório da temporada e nenhum soc Aceh - - Agora, - se você tiver outro aplicativo ou em seu projeto de suíte de APP, - você pode criar outros três estáticos dentro desse aplicativo, - e você pode adicioná-lo às suas configurações de pessoas. - Eu estática euro começando o IRS e quando você está usando, - estude sua URL. - Você pode acessar esse arquivo também a partir desse aplicativo, - então você não precisa especificar o nome do aplicativo aqui. - Isso apenas torna muito mais fácil para você e torna você um canto muito mais portátil no caso - você está mudando o nome do aplicativo ou diretórios ou a localização de seus arquivos estáticos. - A inclusão de Doublet é diferente da herança porque usamos a chave encaracolada pessoal - incluir diretiva e dá um nome de modelo para incluir tentativa e a tentativa de inclusão - que pode ser um trecho de tribunal. - Pode ser um rígido comum que você está usando, - ou talvez apenas um monte de arquivos, - e eu costumo usar directivas para simplesmente escrever um monte de arquivos aqui como arquivos estáticos . - Eles poderiam meu script Java em meus arquivos CSS, - eles poderiam ser uma parte de um plugging igualmente que eu estou usando. - E se eu estiver usando este plugging em páginas diferentes ou abdominais diferentes, - eu posso apenas fazer um templo em manter incluindo em cima do meu arquivo XML para que eu não tenha o - direito. - Mas para esses poços, - uma e outra vez, - inclusão tão intemperada é simplesmente uma maneira de sair, - incluindo algum tipo de código de modelo HTML jangle dentro de outros modelos. - Vamos parar um pouco sobre como você corre direção sanguina? Até agora, temos usado o servidor Jangles Development. - Mas uma das maneiras mais populares de usar o Django é usar um partido para incorporar o jangle - framework em e usando uísque, - a interface do servidor Web Gateway, - para ter uma festa no Django Framer talk. - Você pode ler alguns documentos nele. - Há uma excelente documentação extensa e uma comunidade forte disponível para isso. - Mas o que isso exigiria é baixar o mais sublinhado, - abusado por ligar e carregar em um grupo e, em seguida, modificar o arquivo de configuração do apóstolo - toe incluem configurações de uísque. E se você ler esses documentos, isso ficará claro para você que é Ah, exigirá um pouco de leitura e configuração, e ficarei feliz em ajudá-lo. - Você está realmente implantando direção jangle agora. - Como você escala um site Jangle? - Se você estiver usando um grupo com jangle party dá-lhe a opção de gerar vários processos. - E essa é a maneira mais popular de escalar o Django. - Você também pode usar várias ameaças, além de vários Prosise, - e essa é outra maneira de fazê-lo. - Eu costumo usar vários processos, mas não processo de transferência múltipla. - Então eu só um único processo de crédito. - E eu tenho um grupo configurado de tal forma que ele traz para cima e para baixo os processos à medida que a carga aumenta na correção. - Quando você está servindo arquivos estáticos, você pode querer fazê-lo em um local diferente. - Por exemplo, - se você estiver usando um grupo, - você pode querer todos os seus arquivos estáticos para todos os seus aplicativos. - Armazenar em um único local e ser servido de lá porque ninguém precisa saber de onde você - servi-lo, - e você não quer servir arquivos estáticos de seus processos judiciais. - Você quer servi-lo de um local central diferente. - Normalmente, - as pessoas colocam os arquivos estáticos em um sistema UNIX na barra r barra www barra host local e - assim por diante. - Então, para fazer isso, - você pode usar um comando que os jangles gerenciam. - Não seja. - Porquê guiar para isso? - Você? - Chama-se Collect Static. - O que a estática de coleta faria por você? - É o pé? - Colete todos os arquivos que mudaram todos os arquivos estáticos como CSS JavaScript - imagens e iria colocá-los todos em um diretório sutil que você pedi-lo para lugares que podem - ser especificados onde o seu temos uma dessas configurações superior você I configurações. - Vamos dar uma olhada rapidamente nisso para que você possa usar uma configuração de rota estática do - configurações no seu arquivo I para especificar qual é a sua localização central para colocar arquivos estáticos em -. - E então você pode executar o comando collect static fora dos opiáceos gerenciados. - Clift, - uma segunda maneira popular de servir arquivos estáticos, - é usando um proxy reverso para o Apache, - por exemplo, - algo como o servidor final. - A vantagem disso é que você está servindo apenas um arquivo estático de um servidor Web como - motores enquanto você está servindo todo o seu conteúdo dinâmico de uma festa - e isso leva um monte de carga fora de festa terrível porque Index é muito mais leve. - Innovate serve arquivos, então você está estratificado. Pedidos vão para motores, e isso tira um monte de Lord das costas de um partido. - Jangle fornece um monte de ferramentas e mecanismos para que você tenha que se preocupar menos com o seu - segurança do site. - Vamos rever alguns dos mecanismos de segurança. - A 1ª 1 é proteção secreta por injeção. - A maneira como você usa isso é quando você usa consulta Ross Equal. - Você pode. - Se você se lembra, - dizemos Modelo chamado ou objetos que estão errados. - Então, - por exemplo, - não. - Os objetos não estão errados e implantados. Rossi, desistir, às vezes no seu segredo desiste. - Você não estaria recebendo entrada do usuário de um formulário, - e você estará substituindo partes de sua declaração de sequela com a entrada do usuário. - Por exemplo, - se você estiver pesquisando suas notas para qualquer não, - começando com o que o usuário está escrito em uma caixa de pesquisa, - então você pensaria que a entrada da caixa de pesquisa e substituí-la em sua consulta. - Use suas roupas. - Agora ah, - usuário de milícias pode usar este tipo de formulário de entrada de dedo do pé. - Dê certos argumentos, - que podem fazer coisas ruins para seu banco de dados em alguns casos, - eles podem soltar suas tabelas ou inserir monitores coisas em sua tabela. - São chamados ataques secretos de injeção. - Mas se você sempre usar jangles, - objeto que romântico e em vez disso fora, - substituindo sua consulta ou con coordenando sua consulta. - Cory estava perto com a entrada do usuário se ele usou o argumento do Haram fora do Romântico, - que é um casal ou uma lista, - tomando a entrada do usuário e metodicamente substituindo a importante sequela Query Where - encontra um lugar como um ponto de interrogação. - Usando este método, - você pode evitar ataques secretos de injeção, - e eu recomendo fortemente que você sempre use este método em vez de coordenar a entrada do usuário. - Sua sequela Close. - O segundo mecanismo que analisamos antes é o C s fora do token, - que é usado para evitar o cross-site O R. - Prevenir ataques de falsificação de pedidos cruzados. - Além disso, Jangle tem SSN excessivo em um suporte CBS, - que você pode facilmente usar, - uh, - fornecer autenticação uma criptografia quando você também é Jang que tem o SSL e https - suporte ao protocolo, - e você também pode ter cookies seguros em jangle jangles fornece-lhe vários descontar - mecanismos. - Então, no caso de você ter ah pedido que contêm ele leva muito tempo para buscar a partir do - banco de dados. - Você pode fazer um pedido. - Há vários tipos fora de dinheiro é fornecido, - e a maneira de configurá-lo não é configurações no seu arquivo. - O outro dicionário Caches Dictionary Caches é semelhante ao dicionário de bancos de dados em - que ele pode conter um caixa padrão, - e ele pode ter outros caches também, - então você pode ter vários cashes emaranhados agora, - olhando para o exemplo, - aqui, - a maneira como você configura isso desconte fornecendo um back-end. - Então você está fornecendo um back-end. - O que te diz, que tipo de dinheiro é este? - E a localização do dinheiro? - Então, em Goetzel, - dinheiro de arquivo plano como o jangle dot co dot Kashtan de volta no arquivo baseado em dinheiro base -, - você respondeu, - fornecendo a localização do arquivo plano. Então, neste caso, está na hora de Jango Cash, então Jangle usou este como um dinheiro descontando objetos e jangles muito fácil. - Você simplesmente costumava obter e definir matéria de jangles dinheiro. - Então você diz que o dinheiro não entrar na chave para obter o objeto no dinheiro, - disse ele. - Dinheiro não definir a chave no valor. - Para colocar o dinheiro objeto que você tem banco de dados, - sistema de busca, - memória local e opções de caixa meme disponíveis para descontar seus dados fora. - Uma coisa que tenha em mente é quando você está executando produção genuína foram partido. - Você tem vários processos que você pode querer usar. - O caixa de homem baseado em arquivo ou caixa de banco de dados e não o cache de memória local. Porque se estiver usando o dinheiro da memória local e descontando um pedido, o conteúdo do T é o resultado dos pedidos? - Então não é necessário que a próxima solicitação do mesmo usuário que deseja utilizar os dados de caixa venha para a mesma instância. - Pode ir para um processo diferente, - que não foram. - Tenha o seu catch disponível no caso de um cache de memória local. - Então, com isso, - concluímos esta palestra e esta aula, - foi um prazer ensinar esta aula. - Eu quero ler taxa que eu estou disponível no caso de você bater um obstáculo ou se você está - usando direção geral e se é um tópico que nós cobrimos nesta classe ou ser - algo fora dela. - Classificado como Django ou Luta ou ficarei feliz em ajudá-lo. - Então, sinta-se à vontade para me enviar um e-mail ou diretamente no fórum de esculturas para entrar em contato comigo ou - por favor, siga-me no Twitter também, - porque eu estou frequentemente postando atualizações e registros lá. Então, de novo, foi um prazer dar essa aula, e espero ver algumas boas costas. - Foi construído em Jang sobre você. - Obrigado.