---
# System prepended metadata

title: django learn from docs personal note
tags: [django, python, learn, project, backend]

---

# django learn from docs personal note
###### tags: `python` `django` `backend` `learn` `project`

source code: https://github.com/caoqianming/django-vue-admin
後端程式心智圖：https://gitmind.com/app/doc/d6a2710078
資料庫連結關係圖：
https://dbdiagram.io/d/60ddab06dd6a5971482828d7

drf view 資料

### work flow
```
source /home/lj/Documents/GitHub/djangoLearnFromDocs/venv/bin/activate
python manage.py runserver

python manage.py shell
```
#### test work flow
```
1.
coverage run --omit='*/venv/*' manage.py test
coverage html

2.
coverage run -m pytest

3.
pytest --cov=myproj tests/
 pytest --cov= tests/ 
```


github:
https://github.com/LJlkdskdjflsa/djangoLearnFromDocs

## pytest-django:
note: https://hackmd.io/IYLAHhIiSaaeg5XrBASkUA

### qrcode
```
pip install qrcode
```
https://towardsdatascience.com/generate-qrcode-with-python-in-5-lines-42eda283f325



### test
coverage
```
pip install coverage
```
run test
```
coverage run -m pytest
coverage report -m


coverage run --omit='*/venv/*' manage.py test
coverage html
```

pytest + coverage
https://pytest-cov.readthedocs.io/en/latest/xdist.html

### tutorail

### cors
https://github.com/adamchainz/django-cors-headers
```
pip install django-cors-headers
```
### view set
problems
As the project scaled
- increase amount of view
    - Endpoints subsequently scales with views
    - Repetition of code in the views (queryset)
- Multiple endpoint (urls) can be difficult to maintain

viewset
- easy to write code
- additional layer of abstraction
- repeated logic can be combined into a single calss
- combine logic for a set of related views in a single classes
- write less code (DRY)

### router
- auto generate url patterns for developer
- routes for create/retrieve/update/destroy style action

### api docs and schema
```
pip install pyyaml
pip install uritemplate
```
core api (vs open api)
(use just in DRF)
```
 pip install coreapi
 ```
 
 
### make search

DRF view info
https://www.cdrf.co/

1. base on user
2. base on url

```
pip install django-filter
```
https://django-filter.readthedocs.io/en/stable/guide/install.html

### upload image
```
pip install pillow
```

### social login
https://github.com/wagnerdelima/drf-social-oauth2
```
pip install drf_social_oauth2
pip uninstall djangorestframework-simplejwt

client id:UovwEV9Ek5oTmvjXzmj5tBAUaYbS6TlXd0bHcnfw
client secret:M73NoRXxREEgy1QPJg7RQXQWldopvLLATtnFwqL17rYn1TwGgF1MsfwSabs1j4YZ8KBFoRmWUFPGBs2DlXE6Jex7A2YB6BBAaaA2e7YCWumhEfAlLAt3AnFfE3DNsiyX
```

test retrive token
```
curl -X POST -d "client_id=UovwEV9Ek5oTmvjXzmj5tBAUaYbS6TlXd0bHcnfw&client_secret=M73NoRXxREEgy1QPJg7RQXQWldopvLLATtnFwqL17rYn1TwGgF1MsfwSabs1j4YZ8KBFoRmWUFPGBs2DlXE6Jex7A2YB6BBAaaA2e7YCWumhEfAlLAt3AnFfE3DNsiyX&grant_type=password&username=admin@admin.com&password=admin" http://localhost:8000/auth/token
```
return
```
{"access_token":"HknQt6LQijZtxN8Vv4dDRk6mGedkxI","expires_in":36000,"token_type":"Bearer","scope":"read write","refresh_token":"qOQgn0rLbfj3ZxC6qh9pgwL7LnY5ij"}
```

### Admin
video source : https://www.youtube.com/watch?v=djHsh4V79Yo&t=20s&ab_channel=VeryAcademy

#### make own custom admin

Q:
Select a valid choice. That choice is not one of the available choices.


### project
todo:
Import djongo DB engine
make the non static things
keep learning pytest

fix test_create_things

### 遷移到mongodb
error
```
djongo.exceptions.SQLDecodeError: 

        Keyword: Unknown token: TYPE
        Sub SQL: None
        FAILED SQL: ('ALTER TABLE "social_auth_association" ALTER COLUMN "id" TYPE long',)
        Params: ([],)
        Version: 1.3.6

The above exception was the direct cause of the following exception:
```

example:
https://bezkoder.com/django-mongodb-crud-rest-framework/


### deploy 為了自己建social login