Django: passo-a-passo Linux Mint

novembro 05, 2018

Ambiente virtual

Abra um diretório:

$ mkdir nome-ambiente-virtual
$ cd nome-ambiente-virtual
Então inicie:
python3 -m venv myvenv

Se erro, tente:
$ sudo apt install python3-venv
Iniciar ambiente virtual
source myvenv/bin/activate
$ . myvenv/bin/activate
Instale Django
(myvenv) ~$ python3 -m pip install --upgrade pip
Crie um arquivo requirements.txt com a versão do Django desejada dentro:
(myvenv) ~$ echo 'Django~=2.1.3' > requirements.txt
Resultado do comando:
nome-ambiente-virtual
└───requirements.txt

Execute:
(myvenv) ~$ pip install -r requirements.txt
Inicie projeto
(myvenv) ~/nome-ambiente-virtal$ django-admin startproject mysite .
Settings:
TIME_ZONE = 'America/Sao_Paulo'
LANGUAGE_CODE = 'pt-BR'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']
Terminal:
(myvenv) ~/nome-ambiente-virtual$ python manage.py migrate
Caso erro:
 Veja se está na pasta certa.
Como?
cd  para acessar diretório, depois ls para verificar os arquivos
vá fazendo isso até aparecer manage.py, quando o encontrar, execute novamente o comando:
python manage.py migrate

Se, isso não funcionar, veja esse post:
https://www.pythonanywhere.com/forums/topic/756/
(traduzindo, só Jesus na tua causa irmão)

Rode servidor
python manage.py runserver
Clique no localhost:
Performing system checks...



System check identified no issues (0 silenced).

November 01, 2018 - 17:17:55

Django version 2.1.3, using settings 'test9.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

Quit do servidor e inicie uma aplicação:
(myvenv) ~/nome-ambiente-virtual$ python manage.py startapp app-nome
Abra a pasta na sua IDE

Adicione sua aplicação no settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app-nome',
]
models.py
from django.db import models
from django.utils import timezone


class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

Adicione um modelo novo ao banco de dados:
(myvenv) user@me:~/seu-diretorio $ python manage.py makemigrations app-nome
Saída do comando:
Migrations for 'app-nome':
  blog9/migrations/0001_initial.py
    - Create model Post
(myvenv) user@me:~/seu-diretorio $ 
Depois de ter esse arquivo de migração aberto, aplicamos os dados no banco de dados com:
(myvenv) user@me:~/seu-diretorio$ python manage.py migrate app-nome
Saída do comando:
Operations to perform:
  Apply all migrations: blog9
Running migrations:
  Applying blog9.0001_initial... OK
Django Admin
No arquivo admin.py , edite para:
from django.contrib import admin
from .models import Post

admin.site.register(Post)
Crie um usuário
(myvenv) user@me:~/seu-diretorio $ python manage.py createsuperuser
Insira seu e-mail, senha e whatever, segue a receita de bolo. Quando terminar, entre no 127.0.0.1:8000/admin e explore, faça uns posts etc.

Deploy
 Seu site funciona no seu computador, bora subir ele?
$ git init
Initialized empty Git repository in ~/djangogirls/.git/
$ git config --global user.name "Seu Nome"
$ git config --global user.email voce@exemplo.com
Dá para abrir direto no terminal esse arquivo:
$ touch .gitignore

Insira isso nesse arquivo .gitignore
*.pyc
*~
__pycache__
myvenv
db.sqlite3
/static
.DS_Store
Se não aparecer na IDE, salva tudo, fecha e abre de novo. It's magic!
Anyway, git it now:
$ git status
$ git add --all .
$ git commit -m "escreva algo aqui"
Crie um repositório no github
$ git remote add origin https://github.com/<username>/nome-repositorio.git
$ git push -u origin mastergit 
 Aqui ele vai pedir para tu logar no git pelo cmd, mas nada treta. Segue a receita do miojo!

Configurando no pythonanywhere

Faç sua conta de beginner no pythonanywhere.com. No seu dashboard, vá para accounts e API Token, e, então, crie um novo Token pelo Create new API Token.
 Retorne para a dashboard e então vá para a sessão $ Bash. Vai aprir um terminal e aí tu coloca:
$ pip3.6 install --user pythonanywhere
$ pa_autoconfigure_django.py https://github.com/<username>/nome-repositorio.git
Depois disso, coloque seu usuário pythonanywhere:
(ola.pythonanywhere.com) $ python manage.py createsuperuser
Se tudo deu certo, ao tu ir na aba web, seu site está online.

 Massa né? ^^

Pois é, mas têm alguns detalhes que foram passados batidos, como a secret key (sim, ela não foi criptografada.

Inclua isso no mysite/urls:
from django.urls import path, include
from django.contrib import admin

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
]
Faça um touch urls.py na pasta da sua aplicação e então cole isso:
from django.urls import path
from . import views
urlpatterns = [
    path('', views.post_list, name='post_list'),
]
Então crie uma view no <nome-app>:
from django.shortcuts import render
def
post_list(request):
return render(request, 'blog/post_list.html', {})
Se tudo der certo, vai aparecer erro na template (porque se estiver seguindo esses passos, ela ainda não existe :B). Crie um diretório para isso:
blog
└───templates
    └───blog
Então crie um:

post_list.html


Não esqueça de fazer git e no python também:
$ cd ~/<your-pythonanywhere-username>.pythonanywhere.com
$ git pull
[...]
No terminal (cmd), coloque isso para ir para o campo interativo shell python:
(myvenv) ~/djangogirls$ python manage.py shel

Se tudo deu certo:
(InteractiveConsole)
>>>
Criado um post diretamente do shell:
>>> from django.contrib.auth.models import User
>>> User.objects.all()
>>> me = User.objects.get(username='ola')
>>> from blog.models import Post
>>> Post.objects.all()
>>> Post.objects.create(author=me, title='Sample title', text='Test')

Post dinâmico
Coloque isso no blog/views.py
from django.shortcuts import render
from django.utils import timezone
from .models import Post


def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date') 
    return render(request, 'blog/post_list.html', {'posts': posts})
Vá até seu post_list.html e coloque isso:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
<script src="main.js"></script>
</head>
<body>
<div>
<h1><a href="/">Django Girls Blog</a></h1>
</div>
{% for post in posts %}
<div>
<p>publicado em: {{ post.published_date }}</p>
<h1><a href="">{{ post.title }}</a></h1>
<p>{{ post.text|linebreaksbr }}</p>
</div>
{% endfor %}
</body>
</html>

Faça git pull no python
$ git pull
E então faça reload da page

~ i t ' s  m a g i c ! ~

"mas e para colocar css nisso?"
Segue o caminho:

djangogirls
└─── blog
     └─── static
          └─── css
               └─── blog.css

https://www.youtube.com/watch?v=FNQxxpM1yOs


https://tutorial.djangogirls.org/

https://docs.python.org/3/tutorial/datastructures.html
https://www.youtube.com/watch?v=dOAg6QVAxyk

Banco padrão Django: SQLite


root@beatriz-XPS-8920:/home/beatriz/django# . myvenv/bin/activate
(myvenv) root@beatriz-XPS-8920:/home/beatriz/django# python manage.py runserver 0.0.0.0:8000

Performing system checks...

You Might Also Like

0 comentários

Obrigada por dar seu feedback ;)

Popular Posts

Like us on Facebook

Flickr Images