## exibindo variáveis do usuário autenticado
```python
username = request.POST.get('username')
password = request.POST.get('password')
# from django.contrib.auth import authenticate
user = authenticate(username=username, password=password)
if user:
vars(user) # mostra as variáveis do 'user'
```
## Definindo typehint
```python
# sem
def login (request):
# com
def login(request: HttpResponseRedirect):
```
## protegendo rotas
```python
from django.contrib.auth.decorators import login_required
@login_required(login_url='/login/')
def panel(request):
# ...
```
## Condição ternária
```python
return '' if registro.endereco is None else registro.endereco
```
## Fixtures (dados de exemplo para aplicação)
`my_app/fixtures/initial_data.json`
```json
[
{
"model": "my_app.address",
"pk": 1,
"fields": {
"address": "Rua x",
"address_complement": "",
"city": "Minha cidade",
"state": "SP",
"country": "Brasil",
"user": 1
}
}
]
```
Executar o comando para consumir os dados
`py manage.py loaddata initial_data.json --app my_app`
Para muitos de uma vez
`py manage.py loaddata initial_data.json dados2.json dados3.json --app my_app`
## Gerando dados
`py manage.py dumpdata auth.user > fixtures/auth.json`
Ou completo `py manage.py dumpdata > tudo.json`
Em **settings.py** defina a pasta das fixtures raiz:
```python
# ...
FIXTURE_DIRS = (
os.path.join(BASE_DIR, 'fixtures'),
)
```
Agora é possível executar as fixtures da raiz sem precisar definir a app, logo essa pasta não está dentro de nenhuma app.
`py manage.py load auth.json`