{"id":5898,"date":"2022-04-03T13:19:16","date_gmt":"2022-04-03T05:19:16","guid":{"rendered":"https:\/\/egonlin.com\/?p=5898"},"modified":"2022-04-03T13:19:16","modified_gmt":"2022-04-03T05:19:16","slug":"02-02-%e5%93%8d%e5%ba%94%e6%a8%a1%e5%9d%97","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=5898","title":{"rendered":"02-02 \u54cd\u5e94\u6a21\u5757"},"content":{"rendered":"<h1>\u54cd\u5e94\u6a21\u5757<\/h1>\n<h2>1\u3001\u4f5c\u7528<\/h2>\n<p>\u6839\u636e \u7528\u6237\u8bf7\u6c42URL \u6216 \u7528\u6237\u53ef\u63a5\u53d7\u7684\u7c7b\u578b\uff0c\u7b5b\u9009\u51fa\u5408\u9002\u7684 \u6e32\u67d3\u7ec4\u4ef6\u3002<br \/>\n\u7528\u6237\u8bf7\u6c42URL\uff1a<br \/>\n<a href=\"http:\/\/127.0.0.1:8000\/test\/?format=json\">http:\/\/127.0.0.1:8000\/test\/?format=json<\/a><br \/>\n<a href=\"http:\/\/127.0.0.1:8000\/test.json\">http:\/\/127.0.0.1:8000\/test.json<\/a><\/p>\n<h2>2\u3001\u5185\u7f6e\u6e32\u67d3\u5668<\/h2>\n<p><strong>\u663e\u793ajson\u683c\u5f0f\uff1aJSONRenderer<\/strong><\/p>\n<p>\u8bbf\u95eeURL\uff1a<\/p>\n<ul>\n<li>\n<p><a href=\"http:\/\/127.0.0.1:8000\/test\/?format=json\">http:\/\/127.0.0.1:8000\/test\/?format=json<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/127.0.0.1:8000\/test.json\">http:\/\/127.0.0.1:8000\/test.json<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/127.0.0.1:8000\/test\/\">http:\/\/127.0.0.1:8000\/test\/<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u9ed8\u8ba4\u663e\u793a\u683c\u5f0f\uff1aBrowsableAPIRenderer\uff08\u53ef\u4ee5\u4fee\u6539\u5b83\u7684html\u6587\u4ef6\uff09<\/strong><\/p>\n<p>\u8bbf\u95eeURL\uff1a<\/p>\n<ul>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test\/?format=api\">http:\/\/127.0.0.1:8000\/test\/?format=api<\/a><\/li>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test.api\">http:\/\/127.0.0.1:8000\/test.api<\/a><\/li>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test\/\">http:\/\/127.0.0.1:8000\/test\/<\/a><\/li>\n<\/ul>\n<p><strong>\u8868\u683c\u65b9\u5f0f\uff1aAdminRenderer<\/strong><\/p>\n<p>\u8bbf\u95eeURL\uff1a<\/p>\n<ul>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test\/?format=admin\">http:\/\/127.0.0.1:8000\/test\/?format=admin<\/a><\/li>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test.admin\">http:\/\/127.0.0.1:8000\/test.admin<\/a><\/li>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test\/\">http:\/\/127.0.0.1:8000\/test\/<\/a><\/li>\n<\/ul>\n<p><strong>form\u8868\u5355\u65b9\u5f0f\uff1aHTMLFormRenderer<\/strong><\/p>\n<p>\u8bbf\u95eeURL\uff1a<\/p>\n<ul>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test\/?format=form\">http:\/\/127.0.0.1:8000\/test\/?format=form<\/a><\/li>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test.form\">http:\/\/127.0.0.1:8000\/test.form<\/a><\/li>\n<li><a href=\"http:\/\/127.0.0.1:8000\/test\/\">http:\/\/127.0.0.1:8000\/test\/<\/a><\/li>\n<\/ul>\n<h2>3\u3001\u5c40\u90e8\u4f7f\u7528<\/h2>\n<pre><code class=\"language-python\">from rest_framework.renderers import  HTMLFormRenderer,BrowsableAPIRenderer\nclass BookDetailView(APIView):\n    renderer_classes = [HTMLFormRenderer,BrowsableAPIRenderer ]\n    def get(self,request,pk):\n        book_obj=models.Book.objects.filter(pk=pk).first()\n        bs=BookSerializers(book_obj,many=False)\n        return Response(bs.data)\n    def put(self,request,pk):\n        book_obj = models.Book.objects.filter(pk=pk).first()\n\n        bs=BookSerializers(data=request.data,instance=book_obj)\n        if bs.is_valid():\n            bs.save() # update\n            return Response(bs.data)\n        else:\n            return Response(bs.errors)\n    def delete(self,request,pk):\n        models.Book.objects.filter(pk=pk).delete()\n\n        return Response(&quot;&quot;)<\/code><\/pre>\n<h2>4\u3001\u5168\u5c40\u4f7f\u7528<\/h2>\n<h3>4-1 settings.py\u4e2d\u914d\u7f6e<\/h3>\n<pre><code class=\"language-python\">REST_FRAMEWORK = {\n    &#039;DEFAULT_RENDERER_CLASSES&#039;: [&#039;rest_framework.renderers.JSONRenderer&#039;]\n}<\/code><\/pre>\n<h2>5\u3001\u81ea\u5b9a\u4e49\u663e\u793a\u6a21\u5757<\/h2>\n<pre><code class=\"language-python\">from rest_framework.renderers import  TemplateHTMLRenderer\nclass BookDetailView(APIView):\n    renderer_classes = [TemplateHTMLRenderer]\n    def get(self,request,pk):\n        book_obj=models.Book.objects.filter(pk=pk).first()\n        bs=BookSerializers(book_obj,many=False)\n        return Response(bs.data,template_name=&#039;aa.html&#039;)<\/code><\/pre>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;en&quot;&gt;\n&lt;head&gt;\n\n    &lt;title&gt;Title&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n{{ title }}\n{{ publishDate }}\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u54cd\u5e94\u6a21\u5757 1\u3001\u4f5c\u7528 \u6839\u636e \u7528\u6237\u8bf7\u6c42URL \u6216 \u7528\u6237\u53ef\u63a5\u53d7\u7684\u7c7b\u578b\uff0c\u7b5b\u9009\u51fa\u5408\u9002\u7684 \u6e32\u67d3\u7ec4\u4ef6\u3002 \u7528\u6237\u8bf7\u6c42URL\uff1a h [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[394,400],"tags":[],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/5898"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5898"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/5898\/revisions"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}