Django: passo-a-passo Linux Mint
novembro 05, 2018Ambiente 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 virtualsource 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:
Quit do servidor e inicie uma aplicação: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.
(myvenv) ~/nome-ambiente-virtual$ python manage.py startapp app-nome
Abra a pasta na sua IDEAdicione 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.pyfrom 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
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)
(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
*.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:
Se tudo deu certo, ao tu ir na aba web, seu site está online.(ola.pythonanywhere.com) $ python manage.py createsuperuser
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)
>>>
>>> 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...
0 comentários
Obrigada por dar seu feedback ;)