[ Web Proxy ]
URL:
Viewing:
https://raw.githubusercontent.com/We2one/Notes/master/python-basic-notes/python-days/Day_42.md
[Back]
[Original]
### Django #### Django ##### + + url ---> ( HTML) ---> HTML ```python # views.py def more_goods_list(request): goodstype_id = request.GET.get('goodstype_id') goods_obj_list = Goods.objects.filter(goodstype_id=goodstype_id) return render(request, 'buyer/list.html', {'goods_obj_list': goods_obj_list, 'goodstype_id': goodstype_id}) ``` + + ( JSON XML),, 1. Vue.js, 2. JsonResponse JSON JSON ```python def more_goods_list_ajax(request): goodstype_id = request.GET.get('goodstype_id') goods_obj_list = Goods.objects.filter(goodstype_id=goodstype_id) goods_dic_list = [] for goods_obj in goods_obj_list: dic = {'name': goods_obj.name, 'img': goods_obj.image.name, 'price': goods_obj.price} goods_dic_list.append(dic) return JsonResponse(goods_dic_list, safe=False) ``` ##### JSON XML + JSON (JavaScript Object Notation) : , python 1. JSON Python | Python | JSON | | ---------------- | ------ | | dict | object | | list,tuple | array | | str, unicode | string | | int, long, float | number | | True | true | | False | false | | None | null | + XML (Extensible Markup Language) : , XML + JsonResponse : Python JSON ```python from django.http import JsonResponse def getdata(request): user_list = [ {'name': '', 'age': 18}, {'name': '', 'age': 22}, {'name': '', 'age': 24}, ] return JsonResponse(user_list, safe=False) ``` ##### AJAX 1. AJAX + AJAX (Asynchronous Javascript And XML) : JavaScript XML ( JavaScript , XML JSON) + AJAX : ,, + : 2. AJAX ( jQuery AJAX ) 1. ``` $.ajax({ 1: 1, 2: 2, 3: 3, ... }) ``` 2. | | | | -------- | ------------------------------------------------------------ | | url | | | type | ('POST''GET'), 'GET'. HTTP , | | data | , : {key: value, key: value} | | error | | | success | .: | | dataType | ,
1. "xml" : XML , jQuery
2. "html" : HTML
3. "script" : JavaScript
4. "json" : JSON | ##### Vue 1. Vue + Vue JavaScript , Vue AJAX 2. Vue 1. 2. + Django Vue , **verbatim** Vue ``` {% verbatim %}
{{ message }}
{% endverbatim %} ``` + Vue.js 2 : (HTML ) + ``` {% verbatim %}
{{ message }}
{% endverbatim %} ``` + ``` ``` + 1. Vue.js 2. 3. Vue 4. : 3. 1. **** : Vue . "Mustache" () , HTML 2. **v-bind** : "Mustache" HTML attribute , v-bind ```
``` 3. **v-if** : . true ```
{{ msg }}
{{ msg }}
{{ msg }}
{{ msg }}
{{ msg }}
``` 4. **v-for** : , True ```
{{ game }}
{{ index }} -- {{ game }}
``` 5. **v-on** : DOM , JavaScript ```
{{ message }}
``` ##### REST + **REST** (Representational State Transfer , ) , ****,, + REST ** + RESTful : + 10 1. **** : API , **HTTPS ** 2. **** : + **** 1. 'www.xxx.com' : 2. 'api.xxx.com' : (JSON XML) + **Url** 1. 'www.xxx.com' : 2. 'www.xxx.com/api/' : api , 3. **** : **URL ** 'www.xxx.com/app/v1.0' 4. **** : ,**** , 'getuser' 5. **HTTP ** : + HTTP SQL 1. GET SELECT : () 2. POST CREATE : 3. PUT UPDATE : () 4. DELETE DELETE : + 3 HTTP 1. PATCH UPDATE : () 2. HEAD : 3. OPTIONS : , 6. **** : ,,API , + | | | | ------------------------ | -------------------------------------------------------- | | `?limit=10` | | | `?offset=10` | | | `?page=2&per_page=10` | | | `?sortby=name&order=asc` | , () | | `?animal_type_id=1` | | 7. **** : + | | | | -------------------------------------------- | ------------------------------------------------------------ | | `200 OK - [GET]` | | | `201 CREATED - [POST/PUT/PATCH]` | | | `202 Accepted - [*]` | () | | `204 NO CONTENT - [DELETE]` | | | `400 INVALID REQUEST - [POST/PUT/PATCH]` | , | | `401 Unauthorized - [*]` | () | | `403 Forbidden - [*]` | ( 401 ), | | `404 NOT FOUND - [*]` | ,, | | `406 NOT Acceptable - [GET]` | ( XML JSON ) | | `410 Gone - [GET]` | , | | `422 Unprocesable entity - [POST/PUT/PATCH]` | , | | `500 INTERNAL SERVER ERROR - [*]` | , | 8. **** : 4xx, ., error , `{error: 'Invalid API key'}` 9. **** : , 1. GET /collection : () 2. GET /collection/resource : 3. POST /collection : 4. PUT /collection/resource : 5. PATCH /collection/resource : 6. DELETE /collection/resource : 10. **** : , API , API 11. **** : , JSON , XML ##### FBV () CBV () 1. FBV : request, 2. CBV : django.views.View , ( request , *args *kwargs ) ```python from django.views import View class GoodsView(View): def get(self, request, *args, *kwargs): pass # urlpatterns = [ path('xxxx/xxx/', GoodsView.view.View) ] ``` 3. SCRF : Django CSRF GET , POSTPUTDELETE, postman + csrf_exempt , CSRF , dispatch ,,, postman ```python from django.views.decorators.scrf import csrf_exempt from django.utils.decorators import method_decorator @csrf_exempt def goods(request): pass from django.views import View @method_decorator(csrf_exempt, 'dispatch') class GoodsView(View): def get(self, request, *args, **kwargs): return HttpResponse("get ") ``` ##### Django REST Framework (DRF) 1. DRF 1. : `pip install djangorestframework` 2. `setting.py` app ```python INSTALLED_APP = [ ... 'rest_framework', ] ``` 2. : DRF , Python JSON 1. Serializer (`serializers.py`) : serializers , ModelSerializer HyperlinkedModelSerializer ( url ) ```python from rest_framework import serializers from Store.models import Goods class MoreListlizers(serializers.ModelSerializer): class Meta: model = Goods fields = "__all__" ``` + Serializer Meta 1. model : model 2. fields : model `__all__` 3. depth : , id, 1 filelds 2. ```python from rest_framework import viewsets from .serializers import MoreListlizers class GoodsView(viewsets.ModelViewSet): queryset = Goods.objects.all() serializer_class = MoreListlizers ``` 3. ```python from rest_framework.routers import DefaultRouter router = DefaultRouter() router.register("goods", GoodsView) urlpatterns = [ ... ] urlpatterns += router.urls ``` 4. 5. : ,DRF ( `setting.py` ) ```python REST_FRAMWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', # 'PAGE_SIZE' = 10, } ``` 3. 1. APIView : APIView Django django.views.View ```python from rest_framework.views import APIView from rest_framework.response import Response class MoreListView(APIView): def get(self, request, format=None): goodstype_id = request.GET.get('goodstype_id') goods_obj_list = Goods.objects.filter(goodstype_id=goodstype_id) serializer = MoreListSerializer(goods_obj_list, many=True) return Response(serializer.data ) # urls.py path('xxx/', MoreListView.as_view()) ``` 2. mixins : views , ```python from rest_framework import generics from rest_framework import mixins class MoreListView(mixins.ListModelMixin, generices.GenericAPIView): def get_queryset(self): goodstype_id = self.request.GET.get('goodstype_id') goods_obj_list = Goods.objectsfilter(goodstype_id=goodstype_id).order_by('-id') return goods_obj_list serializer_class = MoreListSerializer def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) def get_serializer_context(self): return { 'view': self # , DRF } # path('xxx/', MoreListView.as_view()) ``` 3. : mixins , REST ```python class MoreListView(generics.ListAPIView): def get_queryset(self): goodstype_id = self.request.GET.get('goodstype_id') goods_obj_list = Goods.objectsfilter(goodstype_id=goodstype_id).order_by('-id') return goods_obj_list serializer_class = MoreListSerializer def get_serializer_context(self): return { 'view': self # , DRF } # path('xxx/', MoreListView.as_view()) ``` 4. viewSet 1. viewSet ````python from rest_framework import viewsets class MoreListViewSet(viewsets.ReadOnlyModelViewSet): def get_queryset(self): goodstype_id = self.request.GET.get('goodstype_id') goods_obj_list = Goods.objectsfilter(goodstype_id=goodstype_id).order_by('-id') return goods_obj_list serializer_class = MoreListSerializer def get_serializer_context(self): return { 'view': self # , DRF } # from django.urls import path, include from buyer import views from rest_framework.router import DefaultRouter more_list = views.MoreListViewSet.as_view({ 'get': 'list', }) urlpatterns = [ ... path('more_list_view/', more_list) ] ```` 2. DRF Django ```python from django.urls import path, include from buyer import views from rest_framework.router import DefaultRouter # router = DefaultRouter() # router.register('more_list_view', views.MoreListViewSet, basename='') urlpatterns = [ ... path('', include(router.urls)) ] ```
Web Proxy Viewer |
New URL
|
Original Page