Code Monkey home page Code Monkey logo

project-spotnews's Introduction

Projeto spotnews

Descrição do projeto

O projeto spotnews é um projeto de um sistema de notícias, onde o usuário pode se cadastrar e logar no sistema, e assim, poderá criar, editar e excluir suas notícias. O usuário também poderá visualizar as notícias de outros usuários, e poderá comentar nas notícias de outros usuários. Usando Django, Django Rest Framework.

Requisito do projeto

1 - Crie a migrate e a model Categories

Criar model de Categories com os seguintes campos:

  • Crie a classe Categories;
  • A classe Categories deve herdar os models do Django;
  • A classe Categories deve ter uma propriedade chamada name;
  • A propriedade name deve ser um campo de caracteres com um tamanho máximo de 200 caracteres;
  • A propriedade name não deve aceitar informações vazias ou maiores que 200 caracteres;
  • O método str da classe Categories deve retornar a propriedade name da categoria criada;

2 - Crie a migrate e a model Users

Criar model de Users com os seguintes campos:

  • Crie a classe Users;
  • A classe Users deve herdar os models do Django;
  • A classe Users deve ter as propriedades chamada name, email, password e role;
  • As propriedades name, password e role devem ser campos de caracteres com um tamanho máximo de 200 caracteres;
  • A propriedade email deve ser um campo do tipo email com um tamanho máximo de 200 caracteres;
  • As propriedades devem ser:
    • name: Campo de caracteres, com tamanho máximo de 200 caracteres;
    • email: Campo de email, , com tamanho máximo de 200 caracteres;
    • password: Campo de caracteres, com tamanho máximo de 200 caracteres;
    • role: Campo de caracteres, com tamanho máximo de 200 caracteres;
  • As propriedades name, email, password e role não devem aceitar informações vazias ou maiores que 200 caracteres;
  • O método str da classe Users deve retornar a propriedade name da pessoa usuária criada;

3 - Crie a migrate e o model News

Criar model de News com os seguintes campos:

  • Crie a classe News;
  • A classe News deve herdar os models do Django;
  • A classe News deve ter as propriedades chamada title, content, author, created_at, image e categories;
  • As propriedades devem ser:
    • title: Campo de caracteres com tamanho máximo de 200 caracteres e com validação que não permita títulos com apenas uma palavra;
    • content: Campo de texto, sem tamanho máximo de caracteres;
    • author: Chave estrangeira da tabela ligada o model Users;
    • created_at: Campo de data;
    • image: Campo de imagem;
    • categories: Chave estrangeira da tabela ligada o model Categories;
  • As propriedades title, content, created_at e categories não devem aceitar informações vazias;
  • A propriedade image pode aceitar informações vazias;
  • A propriedade title não deve aceitar informações maiores que 200 caracteres;
  • A propriedade created_at não deve aceita datas fora do padrão AAAA-MM-DD;
  • A propriedade img deve ter um campo upload_to que deve ser igual ao diretório 'img/';
  • A propriedade categories deve aceitar 1 ou mais categorias e deve se relacionar como muitos para muitos;
  • O método str da classe News deve retornar a propriedade title da notícia criada;

4 - Crie a página Inicial

Criar a página inicial com os seguintes requisitos:

  • Crie um template para a página inicial do projeto;
  • Crie a view e a url necessárias para renderizar o template home.html;
  • Inclua as urls de news nas urls do projeto;
  • O template da página inicial deve ser renderizado na rota http://
  • O template deve ter uma tag link importando o arquivo css css/style.css que está na página de estáticos;
  • A importação de arquivos estáticos deve ser feita através do template tag static;
  • O caminho para a página inicial deve ter o nome de home-page;
  • O template da página inicial deve ter como título Página Inicial;
  • O template da página inicial deve ter um cabeçalho header com a classe header;
  • O template da página inicial deve ter uma lista não ordenada com a classe header-links dentro do cabeçalho;
  • O template da página inicial deve ter na lista não ordenada um link a com referência para a home-page e com o texto Home;
  • O template da página inicial deve ter cards das notícias cadastradas no banco;
  • O template da página inicial deve ter títulos h2 com a classe news-title e os títulos das notícias como valores;
  • O template da página inicial deve ter tags span com a classe news-date e a datas de criação das notícias como valores;
  • O template deve exibir as datas no formato DD/MM/AAAA;
  • O template da página inicial deve exibir as imagens das notícias;

5 - Crie a página de Detalhes de uma Notícia

Criar a página de detalhes de uma notícia com os seguintes requisitos:

  • Crie um template para a página detalhes da notícia;
  • Crie a view e a url necessárias para renderizar o template news_details.html;
  • O template da página detalhes da notícia deve ser renderizado na rota http://127.0.0.1:8000/news/int:id
  • O caminho para a página detalhes da notícia deve ter o nome de news-details-page;
  • O template da página detalhes da notícia deve ter como título Página de Detalhes da Notícia;
  • O template da página detalhes da notícia deve ter um cabeçalho header com a classe header;
  • O template da página detalhes da notícia deve ter uma lista não ordenada com a classe header-links;
  • O template da página detalhes da notícia deve ter no cabeçalho um link a com referência para a home-page e com o texto Home;
  • O template da página detalhes da notícia deve exibir as seguintes informações:
  • O título da notícia em título h1;
  • O conteúdo da notícia em parágrafo p com classe news-content;
  • Cada categoria da notícia em uma tag span com classe news-categories;
  • A pessoa autora da notícia em uma tag span com classe news-author;;
  • A imagem da notícia;
  • A data de criação da notícia no formato DD/MM/AAAA;
  • Modifique as notícias no template home.html para que quando clicadas haja um redirecionamento para a página detalhes da notícia;

6 - Crie a página de Formulário de uma Nova Categoria

Criar a página de formulário de uma nova categoria com os seguintes requisitos:

  • Crie um template para o formulário de cadastro de uma categoria;
  • Crie a view e a url necessárias para renderizar o template categories_form.html;
  • O template do formulário de uma nova categoria deve ser renderizado na rota http://127.0.0.1:8000/categories/;
  • O caminho para o formulário de uma nova categoria deve ter o nome de categories-form;
  • O template do formulário de uma nova categoria deve ter como título Formulário para Nova Categoria;
  • O template do formulário de uma nova categoria deve ter um cabeçalho header com a classe header;
  • O template do formulário de uma nova categoria deve ter uma lista não ordenada com a classe header-links;
  • O template do formulário de uma nova categoria deve ter no cabeçalho um primeiro link a com referência para a home-page e com o texto Home;
  • O template do formulário de uma nova categoria deve ter no cabeçalho um outro link a com referência para a categories-form e com o texto Cadastrar Categorias;
  • O template do formulário de uma nova categoria deve ter uma tag de formulário com a propriedade method do tipo post e a propriedade action com a url para /categories;
  • O template do formulário de uma nova categoria deve carregar o token de segurança CSRF em seu interior usando a tag de template adequada;
  • O template do formulário de uma nova categoria deve ter uma label que como o valor Nome;
  • O template do formulário de uma nova categoria deve ter um input com as algumas especificações:
    • A propriedade type do tipo text;
    • A propriedade name com o valor name;
    • A propriedade maxlength com o valor 200;
    • Precisa ser um campo obrigatório;
  • O template do formulário de uma nova categoria deve ter um botão do tipo submit com texto Salvar;
  • Após o cadastro de uma categoria, a pessoa usuária deve ser redirecionada para a página principal;

7 - Crie a página de Formulário de uma Nova Notícia

Criar a página de formulário de uma nova notícia com os seguintes requisitos:

  • Crie um template para o formulário de cadastro de uma categoria;
  • Crie a view e a url necessárias para renderizar o template news_form.html;
  • O template do formulário de uma nova notícia deve ser renderizado na rota http://127.0.0.1:8000/news/;
  • O caminho para o formulário de uma nova notícia deve ter o nome de news-form;
  • O template do formulário de uma nova notícia deve ter como título Formulário para Nova Notícia;
  • O template do formulário de uma nova notícia deve ter um cabeçalho header com a classe header;
  • O template do formulário de uma nova notícia deve ter uma lista não ordenada com a classe header-links;
  • O template do formulário de uma nova notícia deve ter no cabeçalho um primeiro link a com referência para a home-page e com o texto Home;
  • O template do formulário de uma nova notícia deve ter no cabeçalho um segundo link a com referência para a categories-form e com o texto Cadastrar Categorias;
  • O template do formulário de uma nova notícia deve ter no cabeçalho um terceiro link a com referência para a news-form e com o texto Cadastrar Notícias;
  • O template do formulário de uma nova notícia deve ter uma tag de formulário com a propriedade method do tipo post, a propriedade action com a url para /news/ e a propriedade enctype com valor multipart/form-data;
  • O template do formulário de uma nova notícia deve carregar o token de segurança CSRF em seu interior usando a tag de template adequada;
  • O template do formulário de uma nova notícia deve ter as seguintes tag:
    • Uma label como o valor Título;
    • Um input do tipo text com o nome title;
    • Uma label como o valor Conteúdo;
    • Um textarea com o nome content;
    • Uma label como o valor Autoria;
    • Um select com o nome author;
    • Múltiplos option sendo seus valores os nomes das pessoas usuárias cadastradas no banco;
    • Uma label como o valor Criado em;
    • Um input do tipo date com o nome created_at;
    • Uma label como o valor URL da Imagem;
    • Um input do tipo file com o nome image;
    • Múltiplas label sendo seus valores os nomes das categorias cadastradas no banco;
    • Múltiplos input do tipo checkbox com o nome categories, cada input ligado a uma label de categoria;
    • Um botão do tipo submit com o valor Salvar;
  • Após o cadastro de uma notícia, a pessoa usuária deve ser redirecionada para a página principal;

8 - Crie a rota api/categories com o DRF

Criar a rota api/categories com os seguintes requisitos:

  • Adicione a rota api/ nas urls do projeto;
  • Vincule o router usado para construção da api com a rota api/do projeto;
  • Registre no router a rotas categories com o viewset de Categories;
  • Crie um serializer que receba a model Categories e tenha os campos id e name;
  • Crie uma view que receba todas as categorias cadastradas no banco de dados e o serializer criado anteriormente;
  • Crie uma rota para a view criada com o nome de categories;

9 - Crie a rota api/users com o DRF

Criar a rota api/users com os seguintes requisitos:

  • Adicione a rota api/ nas urls do projeto;
  • Vincule o router usado para construção da api com a rota api/do projeto;
  • Registre no router a rotas users com o viewset de Users;
  • Crie um serializer que receba a model Users e tenha os campos id, name, email e role;
  • Crie uma view que receba todas as pessoas usuárias cadastradas no banco de dados e o serializer criado anteriormente;
  • Crie uma rota para a view criada com o nome de users;

10 - Crie a rota api/news com o DRF

Criar a rota api/news com os seguintes requisitos:

  • Adicione a rota api/ nas urls do projeto;
  • Vincule o router usado para construção da api com a rota api/do projeto;
  • Registre no router a rotas news com o viewset de News;
  • Crie um serializer que receba a model News e tenha os campos id, title, content, author, created_at, image e categories;
  • Crie uma view que receba todas as notícias cadastradas no banco de dados e o serializer criado anteriormente;
  • Crie uma rota para a view criada com o nome de news;

Autor

project-spotnews's People

Contributors

dependabot[bot] avatar trybe-tech-ops avatar walber-vaz avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.