Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parte 4) Nosso segundo projeto | Mão na massa #4

Open
andradebru opened this issue Jun 30, 2022 · 2 comments
Open

Parte 4) Nosso segundo projeto | Mão na massa #4

andradebru opened this issue Jun 30, 2022 · 2 comments

Comments

@andradebru
Copy link

andradebru commented Jun 30, 2022

no github:

  • criar repositório django_cursos pelo github

    • adicionar Readme com .gitignore template python
      Untitled 1
  • copiar o link com ssh para clonar o repositório

no terminal do pc:

  • pelo terminal entrar na pasta workspace e usar o comando git clone *link-SSH-do-repo* para clonar o repo do github

criando e ativando ambiente virtual pelo terminal:

  • entrar na pasta do projeto com cd django_cursos

  • criar o ambiente virtual dentro da pasta de projeto com virtualenv .venv

    (💡 cria o projeto com um nome padrão, assim saberemos q em cada projeto existirá uma pasta .venv)

    💡 com o comando ls -lha no terminal é possível ver os arquivos ocultos em uma pasta

  • ativar o ambiente virtual com source .venv/bin/activate

instalando o Django dentro do ambiente virtual:

dentro da pasta .venv (cd .venv)

pip install Django

💡 com o comando pip freeze conseguimos ver o que esta instalado

iniciar o projeto Django na pasta anterior (q contem o virtualenv) com:

  • cd .. volta uma pasta

  • django-admin startproject django_cursos .

    • ⚠️ caso tenha esquecido o ponto no final vai aparecer o erro q diz q a pasta já existe
      Untitled 2

      pra contornar isso basta escrever o comando novamente repetindo o nome da pasta no final django-admin startproject django_cursos django_cursos

  • .[manage.py runserver inicia o runserver (vai aparecer o link http://127.0.0.1:8000/, clique nele e de volta ao terminal dê o comando ctrl C para retornar à linha de comando)

  • ⚠️ 🐙 hora de mandar os arquivos pro github.com git add ., git commit -m “txt” e git push origin main

criando e iniciando a app cursos:

  • django-admin startapp cursos
  • na tree o projeto estará assim

Untitled 3

💡 passar as infos do pip freeze para um arquivo txt com o comando pip freeze > requirements.txt evita conflitos de versões do django.

⚠️ enviar também para o github.com git add requirements.txt, commit e push

Na IDE:

  • abrir o projeto na IDE de preferência (aqui uso pycharm) a pasta django_cursos
  • criar dentro de uma pasta templates a pasta cursos e dentro dela o arquivo pagina_inicial.html
  • adicionar a app cursos a installed_apps em settings.py:

Untitled 4

  • criar dentro da app cursos um arquivo urls.py e importar o necessário como na imagem:

Untitled 5

  • na views.py da app cursos, adicionar:
    Untitled 6

  • ⚠️ adicionar a rota criada em urls.py da pasta inicial:

Untitled 7

adicionando o visual, estilos e imagens

💡 todos os arquivos necessários para o front podem ser baixados do github do roger, pois o visual não é o foco neste tutorial

  • dentro da app cursos criar a pasta static, dentro de static criar cursos e dentro dessa cursos criar a pasta css

    • na pasta css criar os arquivos de css (pegar os que o roger disponibiliza no github)

      ⚠️ tds os arquivos de front devem estar dentro da app cursos

  • em pagina_inicial.html inserir no inicio {% load static %} e no href =”{% static ‘caminho/aqui’ %}” / >

Untitled 8

- 💡 para não ficar repetindo código é possível usar uma página html como base, com todo o código que precisa estar em tds as páginas e utilizar blocos que mostrarão conteúdos dinamicamente.

Untitled 9

- ⚠️ Nas páginas que usarão essa base é preciso adicionar {% extends ‘cursos/base.html’ %} e {% block conteudo %} *conteudo* {% endblock conteudo %}       

Untitled 10

linkar páginas

  • criar uma pagina listar_cursos.html (copia de página_inicial) dentro de templates/cursos
  • em views.py adicionar a função que retorna a página criada

Untitled 11

  • Criar uma rota com um nome em urls.py :
urlpatterns = [
    path('', views.pagina_inicial, name='cursos.inicio'),
    path('listar/meus-todos/', views.listar_cursos, name='cursos.listar.tudo'),
    ]

Untitled 12

  • Usar a linguagem de template do Django que irá buscar pelo nome e transformar no endereço real: (podemos adicionar isto em qualquer html)
    <a href="{% url 'cursos.listar.tudo' %}">Ver cursos</a>
    Untitled 13

    • 💡 assim voce garante que caso mude a url a página não será perdida

docker

3 formas de utilizar docker:

  • usar postgres qdo necessario com mais simplicidade
  • transformar meu projeto Django também em um container docker (com tds setups e dependencias necessários)
  • publicar o projeto usando docker
  • criar o arquivo docker-composer.yml dentro da pasta inicial

Untitled 14

  • no terminal digitar o comando docker-compose up

  • rodar no terminal: netstat -nlt

  • encontrar o tcp com final :5432 (quer dizer q o postgres está rodando)

    💡 é possível parar com sudo service postgresql stop

@andradebru
Copy link
Author

@huogerac e demais galere: na parte de linkar acho que dei uma perdida enquanto o roger mudava o link hardcodado pro {% %}. Perdão pelo vacilo, espero que os meninos tenham conseguido pegar melhor essa parte <3 qdo resolver issaí atualizo meu comentario

@huogerac
Copy link
Owner

Tem um print seu que pegou. Para linkar a página precisamos:

  1. Criar uma rota com um nome:
urlpatterns = [
    path('', views.pagina_inicial, name='cursos.inicio'),
    path('listar/meus-todos/', views.listar_cursos, name='cursos.listar.tudo'),
]
  1. Usar a linguagem de template do Django que irá buscar pelo nome e transformar no endereço real: (podemos adicionar isto em qualquer html)
<a href="{% url 'cursos.listar.tudo' %}">Ver cursos</a>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants