2 REST framework -- 上
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
![](/assets/blank.gif)
![](/assets/blank.gif)
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
![](/assets/blank.gif)
![](/assets/blank.gif)
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
![](/assets/blank.gif)
![](/assets/blank.gif)
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
![](/assets/blank.gif)
![](/assets/blank.gif)
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
![](/assets/blank.gif)
![](/assets/blank.gif)
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
![](/assets/blank.gif)
![](/assets/blank.gif)
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 -- 上相关推荐
- 在传统.NET Framework 上运行ASP.NET Core项目
新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...
- Entity Framework的启动速度优化
最近开发的服务放到IIS上寄宿之后,遇到一些现象,比如刚部署之后,第一次启动很慢:程序放置一会儿,再次请求也会比较慢.比如第一个问题,可以解释为初次请求某一个服务的时候,需要把程序集加载到内存中可能比 ...
- Microsoft .NET Compact Framework 开发常见问题解答
这个 FAQ 有部分是通过编辑公共 .NET Compact Framework 新闻组 (microsoft.public.dotnet.framework.compactframework) 贴出 ...
- 上传文件_.net core进行文件上传
.net core 和.net framework上传文件还是有一些区别的有很多注意的地方 .net framework 上传文件用httppostedfilebase .net core 上传文件用 ...
- 详解Framework
[Cocoa]深入浅出 Cocoa 之 Framework 罗朝辉(http://blog.csdn.net/kesalin/) CC许可,转载请注明出处 Framework 简介 Mac OS X ...
- C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6
概述 .NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NET Framework的项目升级为.NET 6. 升级条件: Windows 操作系统 .NET 6 SDK Visual S ...
- .NET Core 3.0愈加成熟,微软将不再把.NET Framework API移植给它
目前 .NET Core 3.0 拥有的 API 总数约为 .NET Framework API 的 80%,剩下尚未从 .NET Framework 移植到 .NET Core 的 API,微软考虑 ...
- Bing.com在.NET Core 2.1上运行
相关知识请参考.netCore开发团队博客 https://blogs.msdn.microsoft.com/dotnet/ Bing.com是一种云服务,运行在遍布全球许多数据中心的数千台服务器上. ...
- ASP.NET Core改进了.NET Framework中的字符串处理
显然Microsoft开发人员和管理人员并没有表达清楚,事实上ASP.NET Core 2.0将会得到整个.NET Framework的支持.当前的更改只实现了在ASP.NET上提供.NET Core ...
最新文章
- 安卓高手之路之java层Binder
- Maven2 的常用命令
- ubuntu系统下gedit 打开GBK字符集编码文件出现乱码问题解决办法
- 超越JUnit –测试框架的替代方案
- C++ 安全单例模式总结
- 关于VGGNet网络结构浅谈(主要是VGG16结构)
- win10 动态磁盘 linux,教你如何将win10系统动态磁盘改成基本磁盘?
- 服务器装虚拟声卡,虚拟声卡,教您怎么安装虚拟声卡
- 中国历史朝代歌:夏商与西周,东周分两段
- 简单的创建app id 的流程
- 华为千元旗舰迎GPU Turbo会员不限量升级,这件事很“吓人”
- JavaScript下的setTimeout(fn,0)意味着什么?
- 一款吊到不行接私活儿软件!
- 伪静态URLRewrite学习笔记
- 100多个优秀的互联网编程学习平台整理。
- 计算机静音图标无法更改怎么办,电脑声音图标有红叉怎么办?教您解决方法
- 思科《计算机网络》考试
- S3C6410芯片揭密之一 S3C6410体系结构
- 游戏修改器、外挂原理
- Activiti动态审批实现方案