1、入门

1.1 参考blog

官方文档:http://www.django-rest-framework.org/tutorial/quickstart/#quickstart

yuan的Blog:http://www.cnblogs.com/yuanchenqi/articles/8719520.html

alice的Blog:https://www.cnblogs.com/alice-bj/p/9228402.html

1.2 restful协议

restful协议

---- 一切皆是资源,操作只是请求方式

----book表增删改查     /books/                 books     /books/add/             addbook     /books/(\d+)/change/    changebook     /books/(\d+)/delete/    delbook

----book表增删改查  url里面不能出现动词!!     /books/     -----get            books      -----  返回当前所有数据     /books/     -----post           books      -----  返回提交数据

     /books/(\d+)-----get            bookdetail -----  返回当前查看的单条数据     /books/(\d+)-----put            bookdetail -----  返回更新数据     /books/(\d+)-----delete         bookdetail -----  返回空

1.3 安装

pip install django

pip install djangorestframework

2. 序列化方法

序列化是什么? QuerySet-->list-->json

2.1 restdemo

model

from django.db import modelsclass Book(models.Model):title=models.CharField(max_length=32)price=models.IntegerField()pub_date=models.DateField()publish=models.ForeignKey("Publish",on_delete=models.CASCADE)authors=models.ManyToManyField("Author")def __str__(self):return self.titleclass Publish(models.Model):name=models.CharField(max_length=32)email=models.EmailField()def __str__(self):return self.nameclass Author(models.Model):name=models.CharField(max_length=32)age=models.IntegerField()def __str__(self):return self.name

url

from django.contrib import admin
from django.urls import pathfrom app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('publishes/', views.PublishView.as_view()),
]

view

from django.shortcuts import render,HttpResponse# Create your views here.
from django.views import Viewfrom .models import Publish
import jsonclass PublishView(View):def get(self,request):# QuerySet-->vales取值--->list--->jsonpublish_list = list(Publish.objects.all().values("name","email"))return HttpResponse(json.dumps(publish_list))def post(self,request):pass

database

  

data生成与迁移

  python manage.py makemigrations

  python manage.py migrate

运行django项目

  

2.2 方式1 :list()

2.3 方式2:model_to_dict(obj)

2.4 方式3:django serializers

2.5 方式4 :restframework  serializers (推荐)

2.6 code

from django.shortcuts import render,HttpResponse# 为queryset,model对象做序列化
from rest_framework import serializers  # rest_framework的序列化组件class PublishSerializers(serializers.Serializer):# 对哪些字段序列化name = serializers.CharField()email = serializers.EmailField()from django.views import View
from .models import Publish
import jsonclass PublishView(View):def get(self,request):# QuerySet--->list--->json# 序列化方式1  # list()# publish_list = list(Publish.objects.all().values("name","email"))#return HttpResponse(json.dumps(publish_list))# 序列化方式2  # model对象转换为dict# from django.forms.models import model_to_dict# publish_list = Publish.objects.all()# temp = []# for obj in publish_list:#
        #     temp.append(model_to_dict(obj))#
        #     # temp.append({#     #     "name":obj.name,#     #     "email":obj.email#     # })#
        # return HttpResponse(temp)#
# 序列化方式3   # django的序列化组件# from django.core import serializers# publish_list = Publish.objects.all()# ret = serializers.serialize("json",publish_list)#
        # return HttpResponse(ret)# 序列化方式4  rest_framework的序列化组件publish_list = Publish.objects.all()ret = PublishSerializers(publish_list,many=True)return HttpResponse(ret.data)def post(self,request):pass

3.取数据:APIView

3.1 Django的原生request

1.get取数据

2.post取数据

 

3. request实质就是http报文头

    (1)Django的原生request:浏览器   -------------  服务器"GET url?a=1&b=2 http/1.1\r\user_agent:Google\r\ncontentType:urlencoded\r\n\r\n""POST url http/1.1\r\user_agent:Google\r\ncontentType:urlencoded\r\n\r\na=1&b=2"request.body: a=1&b=2request.POST:if contentType:urlencoded:a=1&b=2----->{"a":1,"b":2}

4.发送json

3.2 原生request源码

content-type

3.3 restframework下的 APIView

1. 新的request 取数据

2. urlencoded类型的data

3. get请求

3.3 APIView源码

1. 继承了基本的View

2. APIView下的dispatch

 

3.4 view代码

get:

  request._request ( 原request )

  request.GET == request._request.GET

post:

  request.data ( 得到 json 数据,也可得到 urlencode 数据)

    都是 rest_framework  APIView 的功劳,

  如果使用 View , request.post( 只能得到 urlencode 的数据,不能得到 json 数据,只能从 request.body 中取)

from django.shortcuts import render,HttpResponse

from django.views import Viewfrom rest_framework.views import APIView# class PublishView(View):    # 原生View
class PublishView(APIView):   # APIViewdef get(self,request):# 取数据print("request.data  ",request.data)print("request.data type  ",type(request.data))print(request._request.GET)  #旧的requestprint(request.GET)return HttpResponse("123")def post(self,request):# 取数据# 1 原生reqeust支持的操作# print("post...",request.POST)# print("body...",request.body)# print(type(request))  # <class 'django.core.handlers.wsgi.WSGIRequest'># from django.core.handlers.wsgi import WSGIRequest# 2 新的reqeust支持的操作# request._request.POST  # 取出旧的requestprint("request.data  ",request.data)print("request.data type  ",type(request.data))return HttpResponse("POST")

4. 序列化字段:Serializer

4.1 准备demo

1. views

from django.shortcuts import render,HttpResponse# 为queryset,model对象做序列化
from rest_framework import serializers  # rest_framework的序列化组件
class PublishSerializers(serializers.Serializer):# 对哪些字段序列化name = serializers.CharField()email = serializers.EmailField()# 为Book做序列化
class BookSerializers(serializers.Serializer):title = serializers.CharField(max_length=32)price = serializers.IntegerField()pub_date = serializers.DateField()from rest_framework.views import APIView
class PublishView(APIView):   # APIViewdef get(self,request):return HttpResponse("123")def post(self,request):return HttpResponse("POST")from .models import Book
class BookView(APIView):def get(self,request):book_list = Book.objects.all()bs = BookSerializers(book_list,many=True)return HttpResponse(bs.data)def post(self,request):pass

2. database

Question报错:

  return datetime.date(*map(int, val.split(b"-")))
  OverflowError: Python int too large to convert to C long

原因:估计是sqlite中datetime的问题

    

解决办法:创建superuser,进入admin页面,添加书籍,生成到数据库的data

         

4.2 响应器 response

""" 响应器
针对 不同得访问者 浏览器 postman 做不同得处理
只有浏览器,用户 会给一个页面!!

几种请求方式
get post
get put delete
"""

1.Response继承了HttpResponse

2. restframework就是一个app,需要注册

    

3.get得到的data实质

4.3 默认打印__str__定制的字段

      

    # publish = serializers.CharField()  # 默认打印 __str__定义的字段名publish = serializers.CharField(source="publish.name")

5. 如何一对多显示

  

    # 一对多# authors = serializers.CharField(source="authors.all")  #"authors": "<QuerySet [<Author: alex>, <Author: yuan>]>"authors = serializers.SerializerMethodField()def get_authors(self,obj):temp = []for obj in obj.authors.all():temp.append(obj.name)return temp

4.4 序列化的过程

"""
序列化BookSerializers(book_list,many=True)过程temp = []for obj in book_list:temp.append({"title":obj.title,"price":obj.price,"pub_date":obj.pub_date,"publish":str(obj.publish),  # obj.publish.name"authors":get_authors(obj)})return HttpResponse(temp)"""

4.5 code代码

view

from django.shortcuts import render,HttpResponse# 为queryset,model对象做序列化
from rest_framework import serializers  # rest_framework的序列化组件class PublishSerializers(serializers.Serializer):# 对哪些字段序列化name = serializers.CharField()email = serializers.EmailField()# 为Book做序列化
class BookSerializers(serializers.Serializer):title = serializers.CharField(max_length=32)price = serializers.IntegerField()pub_date = serializers.DateField()# publish = serializers.CharField()  # 默认打印 __str__定义的字段名publish = serializers.CharField(source="publish.name")# 一对多# authors = serializers.CharField(source="authors.all")  #"authors": "<QuerySet [<Author: alex>, <Author: yuan>]>"authors = serializers.SerializerMethodField()def get_authors(self,obj):temp = []for obj in obj.authors.all():temp.append(obj.name)return tempfrom rest_framework.views import APIView
class PublishView(APIView):   # APIViewdef get(self,request):return HttpResponse("123")def post(self,request):return HttpResponse("POST")from .models import Book
from rest_framework.response import Responseclass BookView(APIView):def get(self,request):book_list = Book.objects.all()bs = BookSerializers(book_list,many=True)# return HttpResponse(bs.data)return Response(bs.data)  # Response继承HttpResponsedef post(self,request):pass

5.序列化模型:ModelSerializers

5.1 以Book为例

from django.shortcuts import render,HttpResponsefrom .models import Bookfrom rest_framework import serializers  # rest_framework的序列化组件
from rest_framework.views import APIView
from rest_framework.response import Responseclass BookModelSerializers(serializers.ModelSerializer):  # ModelSerializerclass Meta:model = Bookfields = '__all__'class BookView(APIView):def get(self,request):book_list = Book.objects.all()bs = BookModelSerializers(book_list,many=True)return Response(bs.data)  # Response继承HttpResponsedef post(self,request):passclass PublishSerializers(serializers.Serializer):# 对哪些字段序列化name = serializers.CharField()email = serializers.EmailField()class PublishView(APIView):   # APIViewdef get(self,request):return HttpResponse("123")def post(self,request):return HttpResponse("POST")

5.2 get请求:显示书籍,自定制

自定制字段的source

     

    # 如何显示字段publish = serializers.CharField(source="publish.name")   # 原生的create不接受自定制,需要重写create方法
authors = serializers.SerializerMethodField(source="authors.all")def get_authors(self,obj):temp = []for obj in obj.authors.all():temp.append(obj.name)return temp

5.3 post请求,保存书籍

1. 取消自定制的,source

create方法中没有source自定义

    def post(self,request):# post请求的数据bs = BookModelSerializers(data=request.data)if bs.is_valid():print(bs.validated_data)bs.save()  # create方法return Response(bs.data)else:return Response(bs.errors)

2. 源码create

3. 发送json数据,提交到database

  

5.4 重写create方法

原生的create不接受自定制,需要重写create方法

class BookModelSerializers(serializers.ModelSerializer):  # ModelSerializerclass Meta:model = Bookfields = '__all__'# 如何显示字段publish = serializers.CharField(source="publish.name")   # 原生的create不接受自定制,需要重写create方法# 重写create方法  # 不接受自定制字段,sourcedef create(self, validated_data):print("validated_data...",validated_data)book = Book.objects.create(title=validated_data['title'],price=validated_data['price'],pub_date=validated_data['pub_date'],publish_id=validated_data['publish']['name'])book.authors.add(*validated_data['authors'])return book

6.单条数据(get,put,delete)

6.1 解耦:新建serializer.py

1.serializer.py

from rest_framework import serializers  # rest_framework的序列化组件from .models import Bookclass PublishSerializers(serializers.Serializer):name = serializers.CharField()email = serializers.EmailField()class BookModelSerializers(serializers.ModelSerializer):  # ModelSerializerclass Meta:model = Bookfields = '__all__'

2. view.py

from django.shortcuts import render,HttpResponsefrom rest_framework.views import APIView
from rest_framework.response import Responsefrom app01.serilizer import BookModelSerializers  # 从serilizer中导入from .models import Bookclass PublishView(APIView):   # APIViewdef get(self,request):return HttpResponse("123")def post(self,request):return HttpResponse("POST")class BookView(APIView):def get(self,request):book_list = Book.objects.all()bs = BookModelSerializers(book_list,many=True)return Response(bs.data)  # Response继承HttpResponsedef post(self,request):# post请求的数据bs = BookModelSerializers(data=request.data)if bs.is_valid():print(bs.validated_data)bs.save()  # create方法return Response(bs.data)else:return Response(bs.errors)

6.2 单条数据demo

urls:正则表达式用re_path

from django.contrib import admin
from django.urls import path
from django.urls import re_path  # 正则表达式的from app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('publishes/', views.PublishView.as_view()), # view(request)====> APIView:dispatch()path('books/', views.BookView.as_view()),re_path(r'books/(\d+)/$', views.BookDetailView.as_view()),
]

view

from django.shortcuts import render,HttpResponsefrom rest_framework.views import APIView
from rest_framework.response import Responsefrom app01.serilizer import BookModelSerializers  # 从serilizer中导入from .models import Bookclass PublishView(APIView):   # APIViewdef get(self,request):return HttpResponse("123")def post(self,request):return HttpResponse("POST")class BookView(APIView):def get(self,request):book_list = Book.objects.all()bs = BookModelSerializers(book_list,many=True)return Response(bs.data)  # Response继承HttpResponsedef post(self,request):# post请求的数据bs = BookModelSerializers(data=request.data)if bs.is_valid():print(bs.validated_data)bs.save()  # create方法return Response(bs.data)else:return Response(bs.errors)class BookDetailView(APIView):def get(self,request,id):# 获取某本书的信息book = Book.objects.filter(pk=id).first()  # 过滤单挑databs = BookModelSerializers(book)return Response(bs.data)def put(self,rquest,id):# 更新某本书的字段book = Book.objects.filter(pk=id).first()bs = BookModelSerializers(book,data=rquest.data)if bs.is_valid():bs.save()  # 实质create方法return Response(bs.data)else:return Response(bs.errors)def delete(self,request,id):# 删除某条数据Book.objects.filter(pk=id).delete()return Response("Delete 第%s本书成功"%(id))

get取数据

更新data

{ "title": "野兽绅士","price": 88, "pub_date": "2019-07-23","publish": 2,"authors": [1,2]}

   

delete

7.超链接API

7.1 配置publish为单条数据

urls

from django.contrib import admin
from django.urls import path
from django.urls import re_path  # 正则表达式的from app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('publishes/', views.PublishView.as_view()), # view(request)====> APIView:dispatch()re_path(r'publishes/(\d+)/$', views.PublishDetailView.as_view()),path('books/', views.BookView.as_view()),re_path(r'books/(\d+)/$', views.BookDetailView.as_view()),
]

View Code

serilizer

from rest_framework import serializers  # rest_framework的序列化组件from .models import Book,Publishclass PublishSerializers(serializers.Serializer):name = serializers.CharField()email = serializers.EmailField()class BookModelSerializers(serializers.ModelSerializer):  # ModelSerializerclass Meta:model = Bookfields = '__all__'class PublishModelSerializers(serializers.ModelSerializer):  # ModelSerializerclass Meta:model = Publishfields = '__all__'

View Code

views

from django.shortcuts import render,HttpResponsefrom rest_framework.views import APIView
from rest_framework.response import Responsefrom app01.serilizer import BookModelSerializers  # 从serilizer中导入
from app01.serilizer import PublishModelSerializers  #

from .models import Book,Publishclass PublishView(APIView):   # APIViewdef get(self,request):publish_list = Publish.objects.all()ps = PublishModelSerializers(publish_list,many=True)return Response(ps.data)def post(self,request):ps = PublishModelSerializers(data=request.data)if ps.is_valid():ps.save()return Response(ps.data)else:return Response(ps.errors)class PublishDetailView(APIView):def get(self,request,id):# 获取某publish的信息publish = Publish.objects.filter(pk=id).first()ps = PublishModelSerializers(publish)return Response(ps.data)def put(self,request,id):# 更新某pub的信息publish = Publish.objects.filter(pk=id).first()ps = PublishModelSerializers(publish,data=request.data)if ps.is_valid():ps.save()return Response(ps.data)else:return Response(ps.errors)def delete(self,request,id):# 删除某天publishPublish.objects.filter(pk=id).delete()return Response("Delete 第%s个出版社"%(id))class BookView(APIView):def get(self,request):book_list = Book.objects.all()bs = BookModelSerializers(book_list,many=True)return Response(bs.data)  # Response继承HttpResponsedef post(self,request):# post请求的数据bs = BookModelSerializers(data=request.data)if bs.is_valid():print(bs.validated_data)bs.save()  # create方法return Response(bs.data)else:return Response(bs.errors)class BookDetailView(APIView):def get(self,request,id):# 获取某本书的信息book = Book.objects.filter(pk=id).first()  # 过滤单挑databs = BookModelSerializers(book)return Response(bs.data)def put(self,rquest,id):# 更新某本书的字段book = Book.objects.filter(pk=id).first()bs = BookModelSerializers(book,data=rquest.data)if bs.is_valid():bs.save()  # 实质create方法return Response(bs.data)else:return Response(bs.errors)def delete(self,request,id):# 删除某条数据Book.objects.filter(pk=id).delete()return Response("Delete 第%s本书成功"%(id))

View Code

7.2 配置超链接

1.效果图

2.urls

3.serilizer中,定义超链接

4.view中id修改pk

5. view中调用 Serializers的地方,重新什么request

7.3 code代码

urls

from django.contrib import admin
from django.urls import path
from django.urls import re_path  # 正则表达式的from app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('publishes/', views.PublishView.as_view()), # view(request)====> APIView:dispatch()re_path(r'publishes/(?P<pk>\d+)/$', views.PublishDetailView.as_view(),name="detailPublish"),path('books/', views.BookView.as_view()),re_path(r'books/(\d+)/$', views.BookDetailView.as_view()),
]

View Code

views

from django.shortcuts import render,HttpResponsefrom rest_framework.views import APIView
from rest_framework.response import Responsefrom app01.serilizer import BookModelSerializers  # 从serilizer中导入
from app01.serilizer import PublishModelSerializers  #

from .models import Book,Publishclass PublishView(APIView):   # APIViewdef get(self,request):publish_list = Publish.objects.all()ps = PublishModelSerializers(publish_list,many=True)return Response(ps.data)def post(self,request):ps = PublishModelSerializers(data=request.data)if ps.is_valid():ps.save()return Response(ps.data)else:return Response(ps.errors)class PublishDetailView(APIView):def get(self,request,pk):# 获取某publish的信息publish = Publish.objects.filter(pk=pk).first()ps = PublishModelSerializers(publish)return Response(ps.data)def put(self,request,pk):# 更新某pub的信息publish = Publish.objects.filter(pk=pk).first()ps = PublishModelSerializers(publish,data=request.data)if ps.is_valid():ps.save()return Response(ps.data)else:return Response(ps.errors)def delete(self,request,pk):# 删除某天publishPublish.objects.filter(pk=pk).delete()return Response("Delete 第%s个出版社"%(pk))class BookView(APIView):def get(self,request):book_list = Book.objects.all()bs = BookModelSerializers(book_list,many=True,context={'request':request})return Response(bs.data)  # Response继承HttpResponsedef post(self,request):# post请求的数据bs = BookModelSerializers(data=request.data,context={'request':request})if bs.is_valid():print(bs.validated_data)bs.save()  # create方法return Response(bs.data)else:return Response(bs.errors)class BookDetailView(APIView):def get(self,request,id):# 获取某本书的信息book = Book.objects.filter(pk=id).first()  # 过滤单挑databs = BookModelSerializers(book,context={'request':request})return Response(bs.data)def put(self,request,id):# 更新某本书的字段book = Book.objects.filter(pk=id).first()bs = BookModelSerializers(book,data=request.data,context={'request':request})if bs.is_valid():bs.save()  # 实质create方法return Response(bs.data)else:return Response(bs.errors)def delete(self,request,id):# 删除某条数据Book.objects.filter(pk=id).delete()return Response("Delete 第%s本书成功"%(id))

View Code

serilizer

from rest_framework import serializers  # rest_framework的序列化组件from .models import Book,Publishclass PublishSerializers(serializers.Serializer):name = serializers.CharField()email = serializers.EmailField()class BookModelSerializers(serializers.ModelSerializer):  # ModelSerializerclass Meta:model = Bookfields = '__all__'# 显示超链接,在Book下的publishpublish = serializers.HyperlinkedIdentityField(view_name="detailPublish", # 别名 含正则表达式lookup_field="publish_id",   # publish_id替换pklookup_url_kwarg="pk",    # url中的pk
    )class PublishModelSerializers(serializers.ModelSerializer):  # ModelSerializerclass Meta:model = Publishfields = '__all__'

View Code

8. 今日总结

day 96CBV与FBVrestful协议----  一切皆是资源,操作只是请求方式----book表增删改查/books/                 books/books/add/             addbook/books/(\d+)/change/    changebook/books/(\d+)/delete/    delbook----book表增删改查/books/     -----get            books      -----  返回当前所有数据/books/     -----post           books      -----  返回提交数据 /books/(\d+)-----get            bookdetail -----  返回当前查看的单条数据 /books/(\d+)-----put            bookdetail -----  返回更新数据 /books/(\d+)-----delete         bookdetail -----  返回空class  Books(View):def get(self,request):pass  # 查看所有书籍def post(self,request):pass  # 添加书籍class  BooksDetail(View):def get(self,request,id):pass  # 查看具体书籍def put(self,request,id):pass  # 更新某本书籍def delete(self,request,id):pass  # 删除某本书籍
restframework(Django)  ----针对数据:json(1)Django的原生request:浏览器   -------------  服务器"GET url?a=1&b=2 http/1.1\r\user_agent:Google\r\ncontentType:urlencoded\r\n\r\n""POST url http/1.1\r\user_agent:Google\r\ncontentType:urlencoded\r\n\r\na=1&b=2"request.body: a=1&b=2request.POST:if contentType:urlencoded:a=1&b=2----->{"a":1,"b":2}(2)restframework 下的APIView:(3)class PublishSerializers(serializers.Serializer):name=serializers.CharField()email=serializers.CharField()PublishSerializers(queryset,many=true)PublishSerializers(model_obj)总结:1 reuqest类----源码2 restframework 下的APIView--源码url(r'^books/$', views.BookView.as_view(),name="books")#  View下的view
books/一旦被访问: view(request) ------APIView: dispatch()3 def dispatch():构建request对象self.request=Request(request)self.request._requestself.request.GET  # getself.request.data # POST  PUT
          分发----if get请求:if request.method.lower() in self.http_method_names:handler = getattr(self, request.method.lower(),self.http_method_not_allowed)else:handler = self.http_method_not_allowed   response = handler(request, *args, **kwargs) # self.get(request, *args, **kwargs)return response                4 序列化类# from django.core import serializers# ret=serializers.serialize("json",publish_list)
        restframework下的序列类  BookModelSerializers将queryset或者model对象序列成一json数据bs=BookModelSerializers(book_list,many=True,context={'request': request})bs=BookModelSerializers(book,context={'request': request})还可以做校验数据,json-------》queryset/model-->记录bs=BookModelSerializers(data=request.data)if bs.is_valid():print(bs.validated_data)bs.save() # 重写create方法5 操作数据:以Book表为例class BookView(APIView):# 查看所有书籍def get(self,request):book_list=Book.objects.all()bs=BookModelSerializers(book_list,many=True,context={'request': request})return Response(bs.data)# 添加一本书籍    def post(self,request):# post请求的数据bs=BookModelSerializers(data=request.data)if bs.is_valid():print(bs.validated_data)bs.save()# create方法return Response(bs.data)else:return Response(bs.errors)class BookDetailView(APIView):# 查看一本书籍def get(self,request,id):book=Book.objects.filter(pk=id).first()bs=BookModelSerializers(book,context={'request': request})return Response(bs.data)# 更新一本书籍def put(self,request,id):book=Book.objects.filter(pk=id).first()bs=BookModelSerializers(book,data=request.data)if bs.is_valid():bs.save()return Response(bs.data)else:return Response(bs.errors)# 删除某一本书籍def delete(self,request,id):Book.objects.filter(pk=id).delete()return Response()restframework1 APIView2 序列组件3 视图、4 组件(认证权限频率)5 数据解析器6 分页和Response

转载于:https://www.cnblogs.com/venicid/p/11231983.html

2 REST framework -- 上相关推荐

  1. 在传统.NET Framework 上运行ASP.NET Core项目

    新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...

  2. Entity Framework的启动速度优化

    最近开发的服务放到IIS上寄宿之后,遇到一些现象,比如刚部署之后,第一次启动很慢:程序放置一会儿,再次请求也会比较慢.比如第一个问题,可以解释为初次请求某一个服务的时候,需要把程序集加载到内存中可能比 ...

  3. Microsoft .NET Compact Framework 开发常见问题解答

    这个 FAQ 有部分是通过编辑公共 .NET Compact Framework 新闻组 (microsoft.public.dotnet.framework.compactframework) 贴出 ...

  4. 上传文件_.net core进行文件上传

    .net core 和.net framework上传文件还是有一些区别的有很多注意的地方 .net framework 上传文件用httppostedfilebase .net core 上传文件用 ...

  5. 详解Framework

    [Cocoa]深入浅出 Cocoa 之 Framework 罗朝辉(http://blog.csdn.net/kesalin/) CC许可,转载请注明出处 Framework 简介 Mac OS X ...

  6. C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6

    概述 .NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NET Framework的项目升级为.NET 6. 升级条件: Windows 操作系统 .NET 6 SDK Visual S ...

  7. .NET Core 3.0愈加成熟,微软将不再把.NET Framework API移植给它

    目前 .NET Core 3.0 拥有的 API 总数约为 .NET Framework API 的 80%,剩下尚未从 .NET Framework 移植到 .NET Core 的 API,微软考虑 ...

  8. Bing.com在.NET Core 2.1上运行

    相关知识请参考.netCore开发团队博客 https://blogs.msdn.microsoft.com/dotnet/ Bing.com是一种云服务,运行在遍布全球许多数据中心的数千台服务器上. ...

  9. ASP.NET Core改进了.NET Framework中的字符串处理

    显然Microsoft开发人员和管理人员并没有表达清楚,事实上ASP.NET Core 2.0将会得到整个.NET Framework的支持.当前的更改只实现了在ASP.NET上提供.NET Core ...

最新文章

  1. 安卓高手之路之java层Binder
  2. Maven2 的常用命令
  3. ubuntu系统下gedit 打开GBK字符集编码文件出现乱码问题解决办法
  4. 超越JUnit –测试框架的替代方案
  5. C++ 安全单例模式总结
  6. 关于VGGNet网络结构浅谈(主要是VGG16结构)
  7. win10 动态磁盘 linux,教你如何将win10系统动态磁盘改成基本磁盘?
  8. 服务器装虚拟声卡,虚拟声卡,教您怎么安装虚拟声卡
  9. 中国历史朝代歌:夏商与西周,东周分两段
  10. 简单的创建app id 的流程
  11. 华为千元旗舰迎GPU Turbo会员不限量升级,这件事很“吓人”
  12. JavaScript下的setTimeout(fn,0)意味着什么?
  13. 一款吊到不行接私活儿软件!
  14. 伪静态URLRewrite学习笔记
  15. 100多个优秀的互联网编程学习平台整理。
  16. 计算机静音图标无法更改怎么办,电脑声音图标有红叉怎么办?教您解决方法
  17. 思科《计算机网络》考试
  18. S3C6410芯片揭密之一 S3C6410体系结构
  19. 游戏修改器、外挂原理
  20. Activiti动态审批实现方案

热门文章

  1. 测绘程序设计大作业——TIN三角网生成+等高线生成
  2. 【产品经理】谁是产品经理,产品经理到底要做什么?
  3. 云存储哪家强:AWS、Azure、 Google、SoftLayer的对象存储和块存储
  4. 什么是机器学习?有哪些算法和分类?又有哪些应用?看完你就懂了
  5. C语言笔记一:二进制补码
  6. 学习笔记: 图的最短路径
  7. [Windows Server 2012] MySQL移机方法
  8. 吃透阿里P8推荐424页Java服务端研发知识图谱后,直接入职蚂蚁P6
  9. 安卓WebView在线预览office文档功能实现
  10. Spring官网阅读(九)Spring中Bean的生命周期(上)