{"data":{"markdownRemark":{"html":"<p><code class=\"language-text\">pip install djangorestframework</code></p>\n<p>添加setting.py</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">INSTALLED_APPS <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token comment\"># ...</span>\n    <span class=\"token string\">'rest_framework'</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">]</span>\nREST_FRAMEWORK <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token string\">'DEFAULT_PERMISSION_CLASSES'</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token string\">'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>创建api包</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">api/\n    __init__.py\n    serializers.py</code></pre></div>\n<p>创建 serializers.py</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> rest_framework <span class=\"token keyword\">import</span> serializers\n<span class=\"token keyword\">from</span> <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>models <span class=\"token keyword\">import</span> Role\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">RoleSerializer</span><span class=\"token punctuation\">(</span>serializers<span class=\"token punctuation\">.</span>ModelSerializer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">class</span> <span class=\"token class-name\">Meta</span><span class=\"token punctuation\">:</span>\n        model <span class=\"token operator\">=</span> Role\n        fields <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'id'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'name'</span><span class=\"token punctuation\">]</span></code></pre></div>\n<p>创建urls.py文件</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> <span class=\"token punctuation\">.</span> <span class=\"token keyword\">import</span> views\n<span class=\"token keyword\">from</span> django<span class=\"token punctuation\">.</span>urls <span class=\"token keyword\">import</span> path\napp_name <span class=\"token operator\">=</span> <span class=\"token string\">'apps'</span>\n\n\nurlpatterns <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n    path<span class=\"token punctuation\">(</span><span class=\"token string\">'Role/'</span><span class=\"token punctuation\">,</span> views<span class=\"token punctuation\">.</span>RoleListView<span class=\"token punctuation\">.</span>as_view<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">=</span><span class=\"token string\">'subject_list'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    path<span class=\"token punctuation\">(</span><span class=\"token string\">'Role/&lt;pk>/'</span><span class=\"token punctuation\">,</span> views<span class=\"token punctuation\">.</span>RoleDetailView<span class=\"token punctuation\">.</span>as_view<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> name<span class=\"token operator\">=</span><span class=\"token string\">'subject_detail'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">]</span></code></pre></div>\n<p>创建views.py文件</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> rest_framework <span class=\"token keyword\">import</span> generics\n<span class=\"token keyword\">from</span> <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>models <span class=\"token keyword\">import</span> Role\n<span class=\"token keyword\">from</span> <span class=\"token punctuation\">.</span>serializers <span class=\"token keyword\">import</span> RoleSerializer\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">RoleListView</span><span class=\"token punctuation\">(</span>generics<span class=\"token punctuation\">.</span>ListAPIView<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    queryset <span class=\"token operator\">=</span> Role<span class=\"token punctuation\">.</span>objects<span class=\"token punctuation\">.</span><span class=\"token builtin\">all</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    serializer_class <span class=\"token operator\">=</span> RoleSerializer\n\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">RoleDetailView</span><span class=\"token punctuation\">(</span>generics<span class=\"token punctuation\">.</span>RetrieveAPIView<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    queryset <span class=\"token operator\">=</span> Role<span class=\"token punctuation\">.</span>objects<span class=\"token punctuation\">.</span><span class=\"token builtin\">all</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    serializer_class <span class=\"token operator\">=</span> RoleSerializer</code></pre></div>\n<p>添加urls.py</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> django<span class=\"token punctuation\">.</span>urls <span class=\"token keyword\">import</span> path<span class=\"token punctuation\">,</span>include\n\nurlpatterns <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">,</span>\n    path<span class=\"token punctuation\">(</span><span class=\"token string\">'api/'</span><span class=\"token punctuation\">,</span> include<span class=\"token punctuation\">(</span><span class=\"token string\">'app.api.urls'</span><span class=\"token punctuation\">,</span> namespace<span class=\"token operator\">=</span><span class=\"token string\">'api'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">]</span></code></pre></div>\n<h2>python shell</h2>\n<p>解析</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token operator\">>></span><span class=\"token operator\">></span> <span class=\"token keyword\">from</span> io <span class=\"token keyword\">import</span> BytesIO\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> <span class=\"token keyword\">from</span> rest_framework<span class=\"token punctuation\">.</span>parsers <span class=\"token keyword\">import</span> JSONParser\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> data <span class=\"token operator\">=</span> b<span class=\"token string\">'{\"id\":4,\"title\":\"Programming\",\"slug\":\"programming\"}'</span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> JSONParser<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>parse<span class=\"token punctuation\">(</span>BytesIO<span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span><span class=\"token string\">'id'</span><span class=\"token punctuation\">:</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'title'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Programming'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'slug'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'programming'</span><span class=\"token punctuation\">}</span></code></pre></div>\n<p>生成</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token operator\">>></span><span class=\"token operator\">></span> <span class=\"token keyword\">from</span> rest_framework<span class=\"token punctuation\">.</span>renderers <span class=\"token keyword\">import</span> JSONRenderer\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> JSONRenderer<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>render<span class=\"token punctuation\">(</span>serializer<span class=\"token punctuation\">.</span>data<span class=\"token punctuation\">)</span>\nb<span class=\"token string\">'{\"id\":4,\"title\":\"Programming\",\"slug\":\"programming\"}'</span></code></pre></div>","frontmatter":{"title":"安装djangorestframework"}}},"pageContext":{"slug":"/build/repo/Django/2、安装djangorestframework/"}}