{"id":1533,"date":"2021-08-06T14:54:49","date_gmt":"2021-08-06T05:54:49","guid":{"rendered":"http:\/\/www.agile-software.site\/?p=1533"},"modified":"2021-09-09T18:33:43","modified_gmt":"2021-09-09T09:33:43","slug":"django-rest-frameworkhp","status":"publish","type":"post","link":"https:\/\/agile-software.net\/?p=1533","title":{"rendered":"Django Rest Framework[hp]"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u4eee\u60f3\u74b0\u5883<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code> python3 -m venv myvenv<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>source myvenv\/bin\/activate<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">requirements.txt<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>Django~=3.1.4\ndjango-cors-headers==3.4.0\ndjangorestframework==3.11.1\ndjangorestframework-simplejwt==4.6.0\ndjoser==2.0.3\npython-decouple\ndj-database-url\ndj-static<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>django-admin startproject rest_api .<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30a2\u30d7\u30ea\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>django-admin startapp api<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">settings.py<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from datetime import timedelta\nfrom decouple import config\nfrom dj_database_url import parse as dburl\n\nINSTALLED_APPS = [\n    &#39;rest_framework&#39;,\n    &#39;api.apps.ApiConfig&#39;,\n    &#39;corsheaders&#39;,\n    &#39;djoser&#39;,\n\nMIDDLEWARE = [\n    &#39;django.middleware.security.SecurityMiddleware&#39;,\nCORS_ORIGIN_WHITELIST = [\n    &quot;http:\/\/localhost:3000&quot;, &quot;https:\/\/nextjs-blog-todos.vercel.app&quot;\n]\nSIMPLE_JWT = {\n    &#39;AUTH_HEADER_TYPES&#39;: (&#39;JWT&#39;,),\n    &#39;ACCESS_TOKEN_LIFETIME&#39;: timedelta(minutes=60),\n}\n\nREST_FRAMEWORK = {\n    &#39;DEFAULT_PERMISSION_CLASSES&#39;: [\n        &#39;rest_framework.permissions.IsAuthenticated&#39;,\n    ],\n    &#39;DEFAULT_AUTHENTICATION_CLASSES&#39;: [\n        &#39;rest_framework_simplejwt.authentication.JWTAuthentication&#39;,\n    ],\n}\n\n# Database\ndefault_dburl = &#39;sqlite:\/\/\/&#39; + str(BASE_DIR \/ &quot;db.sqlite3&quot;)\n\nDATABASES = {\n    &#39;default&#39;: config(&#39;DATABASE_URL&#39;, default=default_dburl, cast=dburl),\n}\n\n# Static files (CSS, JavaScript, Images)\nSTATIC_ROOT = str(BASE_DIR \/ &#39;staticfiles&#39;)<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">models.py<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.db import models\n\n\nclass Post(models.Model):\n\n    title = models.CharField(max_length=50)\n    content = models.CharField(max_length=500)\n    created_at = models.DateTimeField(auto_now_add=True)\n\n    def __str__(self):\n        return str(self.id) + &quot; - &quot; + self.title\n<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code><\/code><\/pre><\/div>\n\n\n\n<p>Serializer\u306ecreate\u3092\u305d\u306e\u307e\u307e\u4f7f\u3063\u3066\u3057\u307e\u3046\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u6697\u53f7\u5316\u3055\u308c\u305a\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3057\u307e\u3046\u3002<\/p>\n\n\n\n<p>created_at\u306e\u5f62\u5f0f\u3092\u5909\u66f4\u3057\u307e\u3059\u3002\u4f55\u5e74\u4f55\u6708\u4f55\u65e5\u4f55\u6642\u4f55\u5206\u4f55\u79d2\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>created_at = serializers.DateTimeField(format=&quot;%Y-%m-%d %H:%M:%S&quot;, read_only=True)<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">views.py<\/h2>\n\n\n\n<p>\u30d6\u30ed\u30b0\u306e\u6295\u7a3f\u30c7\u30fc\u30bf\u306e\u4e00\u89a7\u3092\u53d6\u5f97<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from rest_framework.permissions import AllowAny\nfrom rest_framework import generics\nfrom rest_framework import viewsets\nfrom .serializers import UserSerializer, Content_proSerializer\nfrom .models import Content_pro\n\n\nclass CreateUserView(generics.CreateAPIView):\n    serializer_class = UserSerializer\n    permission_classes = (AllowAny,)\n\n\nclass Content_proListView(generics.ListAPIView):\n    queryset = Content_pro.objects.all()\n    serializer_class = Content_proSerializer\n    permission_classes = (AllowAny,)\n\n\nclass Content_proRetrieveView(generics.RetrieveAPIView):\n    queryset = Content_pro.objects.all()\n    serializer_class = Content_proSerializer\n    permission_classes = (AllowAny,)<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">views.py<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ba1\u7406<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>python manage.py createsuperuser<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u4eee\u60f3\u74b0\u5883 requirements.txt \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210 \u30a2\u30d7\u30ea\u4f5c\u6210 settings.py models.py Serializer\u306ecreate\u3092\u305d\u306e\u307e\u307e\u4f7f\u3063\u3066\u3057\u307e\u3046\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u6697\u53f7\u5316\u3055\u308c\u305a\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58<\/p>\n","protected":false},"author":1,"featured_media":1562,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jin_ogp_image_url":"","_jin_last_featured_id":0,"footnotes":""},"categories":[39],"tags":[],"class_list":["post-1533","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-django-rest-framework"],"_links":{"self":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/1533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1533"}],"version-history":[{"count":3,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/1533\/revisions"}],"predecessor-version":[{"id":1770,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/1533\/revisions\/1770"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/media\/1562"}],"wp:attachment":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}