• django restul webservice返回json数据


    做这个demo的前提是你已经配好了python ,django ,djangorestframwork(在我的上一篇博客中有介绍,大家也可以google),mysql-python等。

    djangorestframwork的官网点击打开链接http://django-rest-framework.org/ 

    工程目录:

    下面开始:

    models.py 主要负责数据库对象的映射

    1. '''  
    2. Created on 2013-9-19  
    3.   
    4. @author: lele  
    5. '''  
    6. from django.db import models  
    7.    
    8.   
    9.    
    10. # Create your models here.  
    11. class Student(models.Model):  
    12.       
    13.     id=models.IntegerField(primary_key=True)  
    14.     Pnamemodels.CharField(max_length=500)  
    15.     age=models.IntegerField()  
    16.   
    17.     class Meta:  
    18.         ordering = ('id',)  

    序列化:

    serializers.py

    1. # -*- coding: UTF-8 -*-  
    2. '''  
    3. Created on 2013-9-19  
    4.   
    5. @author: lele  
    6. '''  
    7. from django.forms import widgets  
    8. from rest_framework import serializers  
    9. from models import Student,Content  
    10. class StudentSerializer(serializers.ModelSerializer):  
    11.     mystudentsdetail = serializers.HyperlinkedRelatedField(many=Trueview_name='student-detail')  
    12.     class Meta:  
    13.         model = Student  
    14.         fields = ('id', 'Pname','age')  
    15.     id = serializers.IntegerField()  # Note: `Field` is an untyped read-only field.  
    16.     Pnameserializers.CharField(max_length=100)  
    17.     age=serializers.IntegerField()  
    18.           
    19.     def restore_object(self, attrs, instance=None):  
    20.         """  
    21.         Create or update a new snippet instance.  
    22.         """  
    23.         if instance:  
    24.             # Update existing instance  
    25.             instance.Panme = attrs['Pname']  
    26.             instance.id = attrs['id']  
    27.             instance.age = attrs['age']  
    28.               
    29.             return instance  
    30.   
    31.         # Create new instance  
    32.         return Student(**attrs)  
    33.       
    34.       


    views.py:

    1. '''  
    2. Created on 2013-9-19  
    3.   
    4. @author: lele  
    5. '''  
    6.   
    7. from django.http import HttpResponse  
    8. from models import Student,Content  
    9. from serializers import StudentSerializer  
    10. from rest_framework import viewsets  
    11.   
    12.       
    13.       
    14. class StudentViewSet(viewsets.ModelViewSet):  
    15.       
    16.     """  
    17.     This viewset automatically provides `list`, `create`, `retrieve`,  
    18.     `update` and `destroy` actions.  
    19.   
    20.     Additionally we also provide an extra `highlight` action.  
    21.     """  
    22.     queryset = Student.objects.all()  
    23.     serializer_class = StudentSerializer  

    修改配置文件:

    在settings.py中修改databases

    1. DATABASES = {  
    2.     'default': {  
    3.         'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.  
    4.         'NAME': 'test',                      # Or path to database file if using sqlite3.  
    5.         # The following settings are not used with sqlite3:  
    6.         'USER': 'root',  
    7.         'PASSWORD': '123456',  
    8.         'HOST': '127.0.0.1',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.  
    9.         'PORT': '3306',                      # Set to empty string for default.  
    10.     }  
    11. }  

    还是在settings.py中添加:

    1. REST_FRAMEWORK = {  
    2.     # Use hyperlinked styles by default.  
    3.     # Only used if the `serializer_class` attribute is not set on a view.  
    4.     'DEFAULT_MODEL_SERIALIZER_CLASS':  
    5.         'rest_framework.serializers.HyperlinkedModelSerializer',  
    6.      
    7.     'DEFAULT_PERMISSION_CLASSES': (  
    8.     'rest_framework.permissions.AllowAny',  
    9.     ),  
    10.   
    11.     'PAGINATE_BY': 3,  #every  number in page   
    12.     'PAGINATE_BY_PARAM': 'page_size',  
    13.     'MAX_PAGINATE_BY': 100    
    14. }  


    设置访问连接:

    在urls.py设置

    1. from django.conf.urls import patterns, include, url  
    2. from rest_framework import viewsets, routers  
    3. from views import StudentViewSet  
    4.   
    5.   
    6.   
    7. router = routers.DefaultRouter()  
    8. router.register(r'mystudents',StudentViewSet)  
    9.   
    10.   
    11.   
    12. urlpatterns = patterns('',  
    13.     url(r'^', include(router.urls)),  
    14.     url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),  
    15. )  



    就剩最后一步了在mysql数据库中添加 数据

    注意:数据库的名字与setting.py中的一致,table的名字格式是:项目名_对象名  

    例如我的项目名为:djangodemo2 models.py中的model对象名为student  ,所以我的表名为:djangodemo2_student

    有三个字段 id,Pname ,age   要与serializers.py中的fields字段相同

    本例中的字段如下:

    运行测试:

    在浏览器中输入:http://localhost:8000 即可看到如下页面:

    点击链接进入具体信息页面:



    转载请注明:

    新浪微博:http://weibo.com/u/3202802157

  • 相关阅读:
    OpenGL Geometry Shader
    正向渲染路径细节 Forward Rendering Path Details
    Tessellation
    渲染路径-实时渲染中常用的几种Rendering Path
    ugui batches
    如何有效提升Unity Gear VR游戏性能
    Unity3D命令行Build
    手机游戏资源 特效 显存分析工具
    换装demo时美术遇到的问题详解
    Rigging a Versatile Weapon Bone for 3ds Max
  • 原文地址:https://www.cnblogs.com/lixingle/p/3343754.html
Copyright © 2020-2023  润新知