0731 #Django rest framework
FBV:Function base views
def index(request):
if request.method == 'POST':
return HTTPresponse(‘ok’)
elif request.method == 'GET':
return render(request,'index.html')
CBV : class base views
URLS:
urlpatterns=[
url(r'^index/',views.Index.as_view())
]
注:url(r'^index/',views.Index.as_view())是固定用法
views.py
from django import views
class Index(views.View):
def get(self,request):
return render(request,'index.html')
def post(self,request):
print(request.POST)
return render(request,'index.html')
注意事项:
1.CBV定义时一定要继承django.views.View
2.注册路由的时候要写类名 .as_view()
3.具体原理:dispatch()方法中利用反射找到每个请求要执行的
2.前后端分离
1.前端:
- APP
- PC网站
- 移动端网站
2.后端提供 JSON格式数据
3.接口(API)是什么?
URL
4.小项目
1. 使用Django 的视图 自己序列化
1. HttpResponse
2. JsonResponse
2. 使用Django REST Framework 框架的序列化工具类
1. 安装
pip install djangorestframework
2. 导入
from rest_framework import serializers
3. 使用
class ArticleSerializer(serializers.Serializer):
官方网址:
http://www.django-rest-framework.org/
中文文档:
https://q1mi.github.io/Django-REST-framework-documentation/
实例:
from django.http import JsonResponse
from app01 import models
from rest_framework import serializers
class DBG(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField()
create_time = serializers.DateField()
update_time = serializers.DateField()
type = serializers.CharField(source='get_type_display')
school = serializers.CharField(source="school.name") #和ORM类绑定的序列化
class CYM(serializers.ModelSerializer): class Meta:
model = models.Article #绑定的哪一个类
fields = '__all__' #['id','name','title']
depth = 1 #官方推荐不超过10层 有外键关联时,才需要设置depth参数! def list1(request):
query_set = models.Article.objects.all()
print(query_set)
xbg = CYM(query_set,many = True)
return JsonResponse(xbg.data,safe=False)
参数解释:
many=True 表示能序列化多个对象。
补充知识点:
1. pip
1. pip安装包临时指定 从国内的清华pip源下载:
pip install django==1.11.11 -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 将虚拟环境的依赖包关系导出到requirements.txt
pip freeze > requirements.txt
3. 按照 requirements.txt 安装项目依赖的第三方包
pip install -r requirements.txt
2. 在单独py文件运行django orm语句
import os
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "about_drf.settings")
import django
django.setup()
from app01 import models
...
3. 可调用对象
def xx(arg):
if callable(arg):
print(arg())
else:
print(arg)
xx('呵呵')
xx(lambda:'嘿嘿嘿')
0731 #Django rest framework的更多相关文章
- 使用django rest framework
django 刚接触,想做一些restful api , google了一下,发现有现成的框架.Django REST framework. 对使用做下记录: 安装 从http://django-re ...
- 利用 Django REST framework 编写 RESTful API
利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framewor ...
- django rest framework 入门
django rest framework 入门1-序列化 Serialization 分类: Python 2013-01-22 22:24 11528人阅读 评论(0) 收藏 举报 djangop ...
- django rest framework
Django-Rest-Framework 教程: 4. 验证和权限 作者: Desmond Chen, 发布日期: 2014-06-01, 修改日期: 2014-06-02 到目前为止, 我们的AP ...
- django rest framework csrf failed csrf token missing or incorrect
django rest framework csrf failed csrf token missing or incorrect REST_FRAMEWORK = { 'DEFAULT_AUTHEN ...
- Django REST Framework学习——Android使用REST方法访问Diango
本文更应该叫做Android如何模拟浏览器访问Django服务器后台. 环境为: Android通过HttpClient访问服务器,从Django中获取json数据,解析显示在UI界面上. 问题为: ...
- 用Django Rest Framework和AngularJS开始你的项目
Reference: http://blog.csdn.net/seele52/article/details/14105445 译序:虽然本文号称是"hello world式的教程&quo ...
- Django REST framework使用ViewSets的自定义路由实现过程
在Django中使用基于类的视图(ClassView),类中所定义的方法名称与Http的请求方法相对应,才能基于路由将请求分发(dispatch)到ClassView中的方法进行处理,而Django ...
- Django REST FrameWork中文教程2:请求和响应
从这一点开始,我们将真正开始覆盖REST框架的核心.我们来介绍几个基本的构建块. 请求对象REST框架引入了Request扩展常规的对象HttpRequest,并提供更灵活的请求解析.Request对 ...
随机推荐
- eclipse JavaEE版"javax.servlet.http.HttpServlet" was not found on the Java Build Path问题的解决办法
使用eclipse JavaEE 版,新建 Dynamic Web Project 项目.在项目里添加 JSP 文件,会在文件头部出现错误提示.提示语句为:The superclass "j ...
- 集合Map多对多映射(使用xml文件)
我们可以使用set,bag,map等来映射多对多关系.在这里,我们将使用map来进行多对多映射. 在这种情况下,将创建三个表. 多对多映射示例 我们需要创建以下文件来映射map元素.首先创建一个项目: ...
- 关于在Java中链接SQLServer数据库中失败的原因分析
首先声明:笔者是Java的初学者,并且一值是走在自学的道路上,长久以来只有“度娘”相伴.(加入了各种Java学习群,基本没有热心帮人解决问题的.可以理解-_-!!!)大神级的人物就不必看拙文了,没有什 ...
- hdu 1816(二分+2-sat)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1816 思路:首先将每把钥匙i拆成两个点i和i+2n,分别表示选与不选,对于被分成n对的钥匙,由于只能选 ...
- [ACM] hdu 3923 Invoker (Poyla计数,高速幂运算,扩展欧几里得或费马小定理)
Invoker Problem Description On of Vance's favourite hero is Invoker, Kael. As many people knows Kael ...
- Android开发者必知的5个开源库
摘要:过去的时间里,Android开发逐步走向成熟.而无论出现多少Android相关的开发工具,我们每天使用的大量开源库却始终是不可或缺的.这里,向大家介绍的是,这个任劳任怨的大家庭中,最受开发者喜爱 ...
- drawableRightset 和 CompoundDrawables
android:drawableRight="@drawable/check_down" 在代码中的用法是: Drawable drawable = getResources(). ...
- tomcat ; nginx ;mysql
[说明]上午在服务器上部署了自己的web目录(tomcat虚拟目录),下午安装并了解了nginx(出了点问题,后来解决了),晚上尝试nginx和tomcat配置(一头雾水) 一:今日完成 1)配置to ...
- JavaScript中label与break配合使用
语法 label: statement 说明 label语句可以在代码中添加标签,以便将来使用.定义的标签可以在将来由break或continue语句引用.加标签的语句一般都要与for语句等循环语句配 ...
- dev 转自
.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; .得到当前选定记录某字段的值 sValue=Table.Rows[gridV ...