{"id":442,"date":"2021-04-25T04:22:28","date_gmt":"2021-04-24T19:22:28","guid":{"rendered":"http:\/\/www.agile-software.site\/?p=442"},"modified":"2021-04-30T17:32:39","modified_gmt":"2021-04-30T08:32:39","slug":"%e3%83%9d%e3%83%bc%e3%83%88%e3%83%95%e3%82%a9%e3%83%aa%e3%82%aa%e3%82%b5%e3%82%a4%e3%83%88%e6%a7%8b%e7%af%89","status":"publish","type":"post","link":"https:\/\/agile-software.net\/?p=442","title":{"rendered":"\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa\u30b5\u30a4\u30c8\u69cb\u7bc9"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">portfolio\u30d5\u30a9\u30eb\u30c0\u30fc\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>mkdir\u3000portfolio<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">.gitignore\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>myvenv\ndb.sqlite3\n.vscode\n__pycache__\n*.pyc\n.DS_Store\nmedia<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u4eee\u60f3\u74b0\u5883\u306e\u4f5c\u6210<\/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<h2 class=\"wp-block-heading\">\u4eee\u60f3\u74b0\u5883\u306e\u5b9f\u884c<\/h2>\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\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>Django~=3.1.4\nPillow~=8.1.0\ndjango-widget-tweaks~=1.4.8<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>pip3 install -r requirements.txt<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>django-admin startproject mysite .<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">settings.py\u3092\u4fee\u6b63<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>LANGUAGE_CODE = &#39;ja&#39;\nTIME_ZONE = &#39;Asia\/Tokyo&#39;\n\nSTATIC_URL = &#39;\/static\/&#39;\n\nMEDIA_URL = &#39;\/media\/&#39;\nMEDIA_ROOT = os.path.join(BASE_DIR, &#39;media&#39;)<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\uff44<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>python3 manage.py migrate<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>python3 manage.py runserver<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>python3 manage.py startapp app<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">&#8216;widget_tweaks&#8217;\u3068&#8217;app&#8217;\u3092\u8ffd\u52a0\u3059\u308b<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>INSTALLED_APPS = [\n    &#39;django.contrib.admin&#39;,\n    &#39;django.contrib.auth&#39;,\n    &#39;django.contrib.contenttypes&#39;,\n    &#39;django.contrib.sessions&#39;,\n    &#39;django.contrib.messages&#39;,\n    &#39;django.contrib.staticfiles&#39;,\n    &#39;widget_tweaks&#39;, # \u8ffd\u52a0\n    &#39;app&#39;, # \u8ffd\u52a0\n]<\/code><\/pre><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>    'widget_tweaks','app',<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u30e2\u30c7\u30eb\u306e\u4f5c\u6210<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">models\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8aad\u307f\u8fbc\u307f<\/h3>\n\n\n\n<p>\u3053\u308c\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u7c21\u5358\u306b\u4f5c\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u60c5\u5831\u304c\u5165\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.db import models<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Models\u30af\u30e9\u30b9\u306e\u7d99\u627f<\/h2>\n\n\n\n<p>Profile\u3068\u3044\u3046\u540d\u524d\u3067\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002\u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u308b\u306b\u306f\u3001class\u5b9a\u7fa9\u3092\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u4f5c\u6210\u3057\u307e\u3059\u3002\u307e\u305f\u3001models\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u3089Models\u30af\u30e9\u30b9\u3092\u7d99\u627f\u3057\u3066\u3044\u307e\u3059\uff08Models\u30af\u30e9\u30b9\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30e1\u30bd\u30c3\u30c9\u3084\u5c5e\u6027\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\uff09\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>class Profile(models.Model):<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6307\u5b9a<\/h2>\n\n\n\n<p><code>models.Model<\/code>&nbsp;\u306f\u30dd\u30b9\u30c8\u304cDjango Model\u3060\u3068\u3044\u3046\u610f\u5473\u3067\u3001Django\u304c\u3001\u3053\u308c\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3059\u3079\u304d\u3082\u306e\u3060\u3068\u5206\u304b\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002models.Model\u3092\u7d99\u627f\u3057\u3001Model\u306e\u5b50\u30af\u30e9\u30b9\u3068\u3057\u3066\u306eProfile\u3092\u4f5c\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>null<br>\u30d5\u30a3\u30fc\u30eb\u30c9\u304cnull\u306b\u306a\u3063\u3066\u3082\u826f\u3044\u304b\u3069\u3046\u304b<br>\u4f8b: null=True<br>\u30b1\u30fc\u30b9: \u65e2\u5b58\u306e\u30c6\u30fc\u30d6\u30eb\u306b\u5f8c\u304b\u3089\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u5834\u5408\u3001null=True\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u65e2\u306b\u5b58\u5728\u3057\u3066\u3044\u308b\u30c7\u30fc\u30bf\u306b\u8ffd\u52a0\u3055\u308c\u305f\u65b0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u5024\u3092null\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b<\/li><li>blank<br>\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u7a7a\u767d\u306b\u306a\u3063\u3066\u3082\u826f\u3044\u304b\u3069\u3046\u304b<br>\u4f8b: blank = True<br>\u30b1\u30fc\u30b9: \u5024\u304c\u7a7a\u767d\u3067\u3082OK\u304b\u3069\u3046\u304b\u3092\u8a2d\u5b9a\u3067\u304d\u308b\u3002\u4e0a\u8a18\u306eArticle \u306b\u304a\u3044\u3066\u3001\u30ab\u30c6\u30b4\u30ea\u304c\u306a\u304f\u3066\u3082\u3001\u30c7\u30fc\u30bf\u3092\u4f5c\u6210\u3057\u305f\u3044\u5834\u5408\u3001 blank=True\u306b\u3059\u308b\u3068\u3001\u5b9f\u73fe\u3067\u304d\u308b<\/li><li>verbose_name<\/li><li>\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8868\u793a\u540d\u3092\u5909\u66f4\u3067\u304d\u308b\u4f8b: verbose_name = &#8220;\u8a18\u4e8b\u30bf\u30a4\u30c8\u30eb&#8221;\u30b1\u30fc\u30b9: Article\u30c6\u30fc\u30d6\u30eb\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u305f\u6642\u306b\u3001\u8868\u793a\u540d\u3092\u8a2d\u5b9a\u3067\u304d\u308b\u3002\u672c\u6765\u3001\u82f1\u8a9e\u3067\u3001 title \u3068\u8fd4\u308b\u304c\u3001\u65e5\u672c\u8a9e\u3067\u3001\u30bf\u30a4\u30c8\u30eb \u306a\u3069\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/li><\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>class Profile(models.Model):\n    title = models.CharField(&#39;\u30bf\u30a4\u30c8\u30eb&#39;, max_length=100, null=True, blank=True)<\/code><\/pre><\/div>\n\n\n\nhttp:\/\/www.agile-software.site\/2021\/04\/17\/%e3%83%a2%e3%83%87%e3%83%ab\/\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-file=\"app\/models.py\" data-lang=\"Python\"><code>from django.db import models\n\n\nclass Profile(models.Model):\n    title = models.CharField(&#39;\u30bf\u30a4\u30c8\u30eb&#39;, max_length=100, null=True, blank=True)\n    subtitle = models.CharField(&#39;\u30b5\u30d6\u30bf\u30a4\u30c8\u30eb&#39;, max_length=100, null=True, blank=True)\n    name = models.CharField(&#39;\u540d\u524d&#39;, max_length=100)\n    job = models.TextField(&#39;\u4ed5\u4e8b&#39;)\n    introduction = models.TextField(&#39;\u81ea\u5df1\u7d39\u4ecb&#39;)\n    github = models.CharField(&#39;github&#39;, max_length=100, null=True, blank=True)\n    twitter = models.CharField(&#39;twitter&#39;, max_length=100, null=True, blank=True)\n    linkedin = models.CharField(&#39;linkedin&#39;, max_length=100, null=True, blank=True)\n    facebook = models.CharField(&#39;facebook&#39;, max_length=100, null=True, blank=True)\n    instagram = models.CharField(&#39;instagram&#39;, max_length=100, null=True, blank=True)\n    topimage = models.ImageField(upload_to=&#39;images&#39;, verbose_name=&#39;\u30c8\u30c3\u30d7\u753b\u50cf&#39;)\n    subimage = models.ImageField(upload_to=&#39;images&#39;, verbose_name=&#39;\u30b5\u30d6\u753b\u50cf&#39;)\n\n    def __str__(self):\n        return self.nam<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ba1\u7406\u753b\u9762\u3067\u30c7\u30fc\u30bf\u3092\u767b\u9332\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.contrib import admin\nfrom .models import Profile\n\nadmin.site.register(Profile)<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u5b9f\u884c<\/h2>\n\n\n\n<p>\u30e2\u30c7\u30eb\u3092\u8ffd\u52a0\u3057\u305f\u306e\u3067\u3001\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>(myvenv) ~$ python3 manage.py makemigrations\n(myvenv) ~$ python3 manage.py migrate<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8URL<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">URLConf<\/h2>\n\n\n\n<p><strong>Django\u306eURL\u30c7\u30a3\u30b9\u30d1\u30c3\u30c1\u30e3<\/strong>\uff1d<strong>URLConf<\/strong>\uff1d<strong>urls.py<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>if settings.DEBUG:\n    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)<\/code><\/pre><\/div>\n\n\n\nhttp:\/\/www.agile-software.site\/2021\/04\/04\/django\/\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"mysite\/urls.py\"><code>from django.contrib import admin\nfrom django.urls import path, include\n\nfrom django.conf.urls.static import static\nfrom django.conf import settings\n\nurlpatterns = [\n    path(&#39;admin\/&#39;, admin.site.urls),\n    path(&#39;&#39;, include(&#39;app.urls&#39;)),\n]\n\nif settings.DEBUG:\n    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c8\u30c3\u30d7\u30da\u30fc\u30b8\u306eURL\u3092\u4f5c\u6210<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">URL\u30bf\u30b0<\/h4>\n\n\n\n<p>view.py\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u3067\u5b9a\u7fa9\u3055\u308c\u305fIndexView\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305fview\u3092\u547c\u3073\u51fa\u3059\u3002<br>IndexView\u306fview\u306eas_view()\u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"app\/urls.py\"><code>urlpatterns = [\n    path(&#39;&#39;, views.IndexView.as_view(), name=&#39;index&#39;),\n]<\/code><\/pre><\/div>\n\n\n\nhttp:\/\/www.agile-software.site\/2021\/04\/25\/django-%e9%80%86%e5%bc%95%e3%81%8d\/\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.urls import path\nfrom app import views\n\nurlpatterns = [\n    path(&#39;&#39;, views.IndexView.as_view(), name=&#39;index&#39;),\n]<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">View<\/h2>\n\n\n\n<p>IndexView\u306fView\u3092\u7d99\u627f\u3057\u3066\u3044\u308b\u3002\u305d\u306e\u305f\u3081View\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.views.generic import View<\/code><\/pre><\/div>\n\n\n\n<p>\u3059\u3079\u3066\u306eprofile_data\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<br>id\u3092\u4f7f\u3063\u3066\u30c7\u30fc\u30bf\u3092\u964d\u9806\u306b\u4e26\u3073\u66ff\u3048\u3066\u6700\u65b0\u306eprofile_data\u3092\u53d6\u5f97\u3059\u308b\u3002<br>profile_data\u3092index.html\u306b\u6e21\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u53d6\u5f97\u3057\u3066\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u6e21\u3059<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>class IndexView(View):\n    def get(self, request, *args, **kwargs):\n        profile_data = Profile.objects.all()\n        if profile_data.exists():\n            profile_data = profile_data.order_by(&quot;-id&quot;)[0]\n        return render(request, &#39;app\/index.html&#39;, {\n            &#39;profile_data&#39;: profile_data,\n        })<\/code><\/pre><\/div>\n\n\n\nhttp:\/\/www.agile-software.site\/2021\/04\/17\/django_view\/\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.views.generic import View\nfrom django.shortcuts import render\nfrom .models import Profile\n\n\nclass IndexView(View):\n    def get(self, request, *args, **kwargs):\n        profile_data = Profile.objects.all()\n        if profile_data.exists():\n            profile_data = profile_data.order_by(&quot;-id&quot;)[0]\n        return render(request, &#39;app\/index.html&#39;, {\n            &#39;profile_data&#39;: profile_data,\n        })<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">base.html<\/h2>\n\n\n\n<p>HTML\u306e<ruby><code>&lt;nav&gt;<\/code><rt>\u30ca\u30d3<\/rt><\/ruby>\u8981\u7d20\u306f\u3001<strong>\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30ea\u30f3\u30af\u3092\u6301\u3064\u30bb\u30af\u30b7\u30e7\u30f3<\/strong>\u3067\u3042\u308b\u3053\u3068\u3092\u8868\u3057\u307e\u3059\u3002\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30ea\u30f3\u30af\u3068\u306f\u3001\u305d\u306e\u30da\u30fc\u30b8\u5185\u3078\u306e\u30ea\u30f3\u30af\u3084\u5916\u90e8\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30f3\u30af\u3092\u6307\u3057\u307e\u3059\u3002<br>&lt;ul&gt;\u306b\u3088\u308b\u8907\u6570\u306e\u30ea\u30f3\u30af\u306e\u30ea\u30b9\u30c8\u3092&lt;nav&gt;\u3067\u56f2\u3093\u3067\u3044\u308b\u3002<\/p>\n\n\n\n<p>href\u3067<strong><strong>\u30ea\u30f3\u30af\u5148\u306e\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u5f79\u5272<\/strong><\/strong><br>href=&#8221;\/&#8221;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bf\u30b0<\/h3>\n\n\n\n<p>\u3053\u306e&nbsp;<code>{% ... %}<\/code>&nbsp;\u306fDjango\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3066\u3044\u307e\u3059\u3002<br>\u300c\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bf\u30b0\u300d\u306f\u3001\u300c\u3053\u306e\u90e8\u5206\u3067\u4f55\u304b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e&nbsp;<strong>\u52d5\u4f5c<\/strong>&nbsp;\u3092\u3055\u305b\u308b\u3088\u300d\u3068\u3044\u3046\u610f\u5473\u306b\u306a\u308a\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"428\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/base.html.png\" alt=\"\" class=\"wp-image-470\"\/><\/figure>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>&lt;nav class=&quot;navbar navbar-expand-lg&quot;&gt;\n        &lt;div class=&quot;container&quot;&gt;\n            &lt;a class=&quot;navbar-brand&quot; href=&quot;\/&quot;&gt;\n                &lt;img src=&quot;{% static &#39;img\/logo.svg&#39; %}&quot; width=&quot;80&quot; height=&quot;80&quot;&gt;\n            &lt;\/a&gt;\n            &lt;ul class=&quot;navbar-nav&quot;&gt;\n                &lt;li class=&quot;nav-item mr-3&quot;&gt;\n                    &lt;a class=&quot;nav-link nav-color&quot; href=&quot;\/&quot;&gt;HOME&lt;\/a&gt;\n                &lt;\/li&gt;\n                &lt;li class=&quot;nav-item mr-3&quot;&gt;\n                    &lt;a class=&quot;nav-link nav-color&quot; href=&quot;&quot;&gt;ABOUT&lt;\/a&gt;\n                &lt;\/li&gt;\n                &lt;li class=&quot;nav-item&quot;&gt;\n                    &lt;a class=&quot;nav-link nav-color&quot; href=&quot;&quot;&gt;CONTACT&lt;\/a&gt;\n                &lt;\/li&gt;\n            &lt;\/ul&gt;\n        &lt;\/div&gt;\n    &lt;\/nav&gt;<\/code><\/pre><\/div>\n\n\n\nhttp:\/\/www.agile-software.site\/2021\/04\/08\/bootstrap\/\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>{% load static %}\n\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;ja&quot;&gt;\n\n&lt;head&gt;\n    &lt;meta charset=&quot;UTF-8&quot;&gt;\n    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;\n    &lt;link rel=&quot;stylesheet&quot; href=&quot;https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.4.1\/css\/bootstrap.min.css&quot;&gt;\n    &lt;link rel=&quot;stylesheet&quot; href=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/5.13.0\/css\/all.min.css&quot;&gt;\n    &lt;link rel=&quot;stylesheet&quot; href=&quot;{% static &#39;css\/style.css&#39; %}&quot;&gt;\n    &lt;title&gt;Portfolio&lt;\/title&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n    &lt;nav class=&quot;navbar navbar-expand-lg&quot;&gt;\n        &lt;div class=&quot;container&quot;&gt;\n            &lt;a class=&quot;navbar-brand&quot; href=&quot;\/&quot;&gt;\n                &lt;img src=&quot;{% static &#39;img\/logo.svg&#39; %}&quot; width=&quot;80&quot; height=&quot;80&quot;&gt;\n            &lt;\/a&gt;\n            &lt;ul class=&quot;navbar-nav&quot;&gt;\n                &lt;li class=&quot;nav-item mr-3&quot;&gt;\n                    &lt;a class=&quot;nav-link nav-color&quot; href=&quot;\/&quot;&gt;HOME&lt;\/a&gt;\n                &lt;\/li&gt;\n                &lt;li class=&quot;nav-item mr-3&quot;&gt;\n                    &lt;a class=&quot;nav-link nav-color&quot; href=&quot;&quot;&gt;ABOUT&lt;\/a&gt;\n                &lt;\/li&gt;\n                &lt;li class=&quot;nav-item&quot;&gt;\n                    &lt;a class=&quot;nav-link nav-color&quot; href=&quot;&quot;&gt;CONTACT&lt;\/a&gt;\n                &lt;\/li&gt;\n            &lt;\/ul&gt;\n        &lt;\/div&gt;\n    &lt;\/nav&gt;\n\n    &lt;main&gt;\n        &lt;div class=&quot;container&quot;&gt;\n            {% block content %}\n            {% endblock %}\n        &lt;\/div&gt;   \n    &lt;\/main&gt;\n\n    &lt;footer class=&quot;py-4 bg-dark text-center&quot;&gt;\n        &lt;small class=&quot;text-white&quot;&gt;\u00a9 2021 perpetualtraveler&lt;\/small&gt;\n    &lt;\/footer&gt;\n\n    {% block extra_js %}\n    {% endblock %}\n&lt;\/body&gt;\n\n&lt;\/html&gt;<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">index.html<\/h2>\n\n\n\n<p>{{ }}\u306fHTML\u306b\u8868\u793a\u3055\u305b\u308b<br>{%%}\u306fHTML\u306b\u8868\u793a\u3055\u308c\u307e\u305b\u3093<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>{% extends &quot;app\/base.html&quot; %}\n\n{% block content %}\n\n&lt;div class=&quot;card top d-flex flex-column justify-content-end mb-4&quot;&gt;\n    &lt;img src=&quot;{{ profile_data.topimage.url }}&quot; alt=&quot;&quot;&gt;\n    &lt;div class=&quot;overlay text-white p-5&quot;&gt;\n        &lt;h1 class=&quot;title&quot;&gt;{{ profile_data.title }}&lt;\/h1&gt;\n        &lt;h5 class=&quot;subtitle&quot;&gt;{{ profile_data.subtitle }}&lt;\/h5&gt;            \n    &lt;\/div&gt;\n&lt;\/div&gt;\n\n{% endblock %}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">CSS<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>* {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n}\n\nbody {\n    background: #F1F1F1;\n    display: flex;\n    flex-flow: column;\n    min-height: 100vh;\n}\n\nmain {\n    flex: 1;\n}\n\n\/* index *\/\n\n.navbar-nav {\n    flex-direction: row!important;\n}\n\n.nav-color {\n    color: black;\n}\n\n.nav-color:hover {\n    color: #EE6C4D;\n}\n\n.nav-color:after {\n    content: &quot;&quot;;\n    display: block;\n    height: 2px;\n    background: #EE6C4D;\n    margin-top: 6px;\n    opacity: 0;\n    transform: translateY(12px);\n    transition: all 0.3s ease-in-out;\n}\n\n.nav-color:hover:after {\n    transform: translateY(0px);\n    opacity: 1;\n}\n\n.top img {\n    object-fit: cover;\n    height: 500px;\n}\n\n.overlay {\n    position: absolute;\n}\n\n.title {\n    font-size: 4rem;\n}\n\n.subtitle {\n    font-size: 2rem;\n}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ba1\u7406\u8005\u304b\u3089\u8ffd\u52a0<\/h2>\n\n\n\n<p>\u65b0\u305f\u306bmedia\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u3067\u304d\u753b\u50cf\u304c\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"935\" height=\"357\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/2.png\" alt=\"\" class=\"wp-image-476\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/2.png 935w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/2-300x115.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/2-768x293.png 768w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/2.png 856w\" sizes=\"auto, (max-width: 935px) 100vw, 935px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"810\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/1-1024x810.png\" alt=\"\" class=\"wp-image-475\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/1-1024x810.png 1024w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/1-300x237.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/1-768x607.png 768w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/1.png 1208w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/1-1024x810.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u4e0a\u8a18\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081models.py\u306bProfile\u306e\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"790\" height=\"390\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/profile_code.png\" alt=\"\" class=\"wp-image-547\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">work<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"416\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/work-1024x416.png\" alt=\"\" class=\"wp-image-548\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/work-1024x416.png 1024w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/work-300x122.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/work-768x312.png 768w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/work-1536x624.png 1536w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/work.png 1620w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/work-1024x416.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"857\" height=\"244\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/work_code.png\" alt=\"\" class=\"wp-image-557\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/work_code.png 857w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/work_code-300x85.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/work_code-768x219.png 768w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/work_code.png 856w\" sizes=\"auto, (max-width: 857px) 100vw, 857px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">experience<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"346\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/experience-1024x346.png\" alt=\"\" class=\"wp-image-549\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/experience-1024x346.png 1024w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/experience-300x101.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/experience-768x260.png 768w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/experience-1536x519.png 1536w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/experience.png 1618w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/experience-1024x346.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"603\" height=\"205\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/experience_code.png\" alt=\"\" class=\"wp-image-555\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">education<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"228\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/education-1024x228.png\" alt=\"\" class=\"wp-image-550\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/education-1024x228.png 1024w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/education-300x67.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/education-768x171.png 768w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/education-1536x342.png 1536w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/education.png 1618w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/education-1024x228.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"521\" height=\"188\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/education_code.png\" alt=\"\" class=\"wp-image-556\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">software<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"197\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/software-1024x197.png\" alt=\"\" class=\"wp-image-551\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/software-1024x197.png 1024w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/software-300x58.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/software-768x147.png 768w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/software-1536x295.png 1536w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/software.png 1620w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/software-1024x197.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"606\" height=\"166\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/software_code.png\" alt=\"\" class=\"wp-image-554\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Technical<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"200\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/technical-1024x200.png\" alt=\"\" class=\"wp-image-553\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/technical-1024x200.png 1024w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/technical-300x59.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/technical-768x150.png 768w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/technical-1536x301.png 1536w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/technical.png 1620w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/technical-1024x200.png 856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"148\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/technical_code.png\" alt=\"\" class=\"wp-image-552\"\/><\/figure>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f5c\u54c1\u30ea\u30b9\u30c8<\/h2>\n\n\n\n<p>app\/models.py\u306b\u4e0b\u8a18\u306e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"app\/models.py\"><code>class Work(models.Model):\n    title = models.CharField(&#39;\u30bf\u30a4\u30c8\u30eb&#39;, max_length=100)\n    image = models.ImageField(upload_to=&#39;images&#39;, verbose_name=&#39;\u30a4\u30e1\u30fc\u30b8\u753b\u50cf&#39;)\n    thumbnail = models.ImageField(upload_to=&#39;images&#39;, verbose_name=&#39;\u30b5\u30e0\u30cd\u30a4\u30eb&#39;, null=True, blank=True)\n    skill = models.CharField(&#39;\u30b9\u30ad\u30eb&#39;, max_length=100)\n    url = models.CharField(&#39;URL&#39;, max_length=100, null=True, blank=True)\n    created = models.DateField(&#39;\u4f5c\u6210\u65e5\u6642&#39;)\n    description = models.TextField(&#39;\u8aac\u660e&#39;)\n\n    def __str__(self):\n        return self.title<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ba1\u7406\u753b\u9762\u3067\u30c7\u30fc\u30bf\u3092\u767b\u9332\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.contrib import admin\nfrom .models import Profile, Work\n\nadmin.site.register(Profile)\nadmin.site.register(Work)<\/code><\/pre><\/div>\n\n\n\n<p>\u65b0\u305f\u306bWorks\u306e<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"919\" height=\"361\" src=\"http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/3.png\" alt=\"\" class=\"wp-image-477\" srcset=\"https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/3.png 919w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/3-300x118.png 300w, https:\/\/agile-software.net\/wp-content\/uploads\/2021\/04\/3-768x302.png 768w, http:\/\/www.agile-software.site\/wp-content\/uploads\/2021\/04\/3.png 856w\" sizes=\"auto, (max-width: 919px) 100vw, 919px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u8a73\u7d30\u753b\u9762\u306eURL\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/h2>\n\n\n\n<p><code>&lt;int:pk&gt;<\/code>\u306f\u3001Work\u30c7\u30fc\u30bf\u306eID\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"app\/urls.py\"><code>from django.urls import path\nfrom app import views\n\nurlpatterns = [\n    path(&#39;&#39;, views.IndexView.as_view(), name=&#39;index&#39;),\n    path(&#39;detail\/&lt;int:pk&gt;\/&#39;, views.DetailView.as_view(), name=&#39;detail&#39;),<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u8a73\u7d30\u753b\u9762\u306e\u30d3\u30e5\u30fc\u3092\u4f5c\u6210<\/h2>\n\n\n\n<p>DetailView\u30af\u30e9\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<br><code>self.kwargs['pk']<\/code>\u306fURL\u3067\u6307\u5b9a\u3057\u305f<code>pk<\/code>\u306e\u5024\u3092\u53d6\u5f97\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>class DetailView(View):\n    def get(self, request, *args, **kwargs):\n        work_data = Work.objects.get(id=self.kwargs[&#39;pk&#39;])\n        return render(request, &#39;app\/detail.html&#39;, {\n            &#39;work_data&#39;: work_data\n        })<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u8a73\u7d30\u753b\u9762\u3078\u306e\u30ea\u30f3\u30af\u3092\u8ffd\u52a0<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>&lt;a class=&quot;stretched-link work&quot; href=&quot;{% url &#39;detail&#39; work.id %}&quot;&gt;&lt;\/a&gt;<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u8a73\u7d30\u753b\u9762\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>{% extends &quot;app\/base.html&quot; %}\n\n{% block content %}\n\n&lt;h3 class=&quot;mb-4&quot;&gt;{{ work_data.title }}&lt;\/h3&gt;\n&lt;div class=&quot;card top mb-4&quot;&gt;\n    &lt;img src=&quot;{{ work_data.image.url }}&quot; alt=&quot;&quot;&gt;\n&lt;\/div&gt;\n\n&lt;div class=&quot;row&quot;&gt;\n    &lt;div class=&quot;col-sm-4 mb-4&quot;&gt;\n        &lt;h4 class=&quot;mb-3&quot;&gt;INFORMATION&lt;\/h4&gt;\n        &lt;p&gt;\n            &lt;i class=&quot;fas fa-laptop-code mr-2&quot;&gt;&lt;\/i&gt;\n            &lt;span class=&quot;font-weight-bolder&quot;&gt;SKILLS : &lt;\/span&gt;\n            {{ work_data.skill }}\n        &lt;\/p&gt;\n        &lt;hr&gt;\n        &lt;p&gt;\n            &lt;i class=&quot;fab fa-github mr-2&quot;&gt;&lt;\/i&gt;\n            &lt;span class=&quot;font-weight-bolder&quot;&gt;GITHUB : &lt;\/span&gt;\n            {% if work_data.url %}\n                &lt;a class=&quot;link-color&quot; href=&quot;{{ work_data.url }}&quot; target=&quot;_blank&quot;&gt;Link&lt;\/a&gt;\n            {% else %}\n                Private\n            {% endif %}\n        &lt;\/p&gt;\n        &lt;hr&gt;\n        &lt;p&gt;\n            &lt;i class=&quot;far fa-calendar-alt mr-2&quot;&gt;&lt;\/i&gt;\n            &lt;span class=&quot;font-weight-bolder&quot;&gt;CREATED : &lt;\/span&gt;\n            {{ work_data.created }}\n        &lt;\/p&gt;\n        &lt;hr&gt;\n    &lt;\/div&gt;\n    &lt;div class=&quot;col-sm-8 mb-5&quot;&gt;\n        &lt;h4 class=&quot;mb-3&quot;&gt;PROJECT DESCRIPTION&lt;\/h4&gt;\n        &lt;p&gt;{{ work_data.description|linebreaksbr }}&lt;\/p&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;\n\n{% endblock %}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\uff46<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"app\/static\/css\/style.css\"><code>\/* detail *\/\n.link-color {\n    color: #EE6C4D;\n}\n\n.link-color:hover {\n    color: #c56c55;\n    text-decoration: none;\n}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u30d3\u30e5\u30fc\u3092\u4f5c\u6210<\/h2>\n\n\n\n<p>Profile\u30e2\u30c7\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u30c7\u30fc\u30bf\u3092\u6e21\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>class AboutView(View):\n    def get(self, request, *args, **kwargs):\n        profile_data = Profile.objects.all()\n        if profile_data.exists():\n            profile_data = profile_data.order_by(&quot;-id&quot;)[0]\n        return render(request, &#39;app\/about.html&#39;, {\n            &#39;profile_data&#39;: profile_data,\n        })<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u9762\u3078\u306e\u30ea\u30f3\u30af\u3092\u4f5c\u6210<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>&lt;a class=&quot;nav-link nav-color&quot; href=&quot;{% url &#39;about&#39; %}&quot;&gt;ABOUT&lt;\/a&gt;<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u9762\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>{% extends &quot;app\/base.html&quot; %}\n\n{% block content %}\n\n&lt;h3 class=&quot;mb-4&quot;&gt;Profile&lt;\/h3&gt;\n&lt;div class=&quot;mb-5&quot;&gt;\n    &lt;div class=&quot;row&quot;&gt;\n        &lt;div class=&quot;col-md-8&quot;&gt;\n            &lt;p&gt;{{ profile_data.introduction|linebreaksbr }}&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=&quot;col-md-4&quot;&gt;\n            &lt;div class=&quot;card text-center px-5 py-4&quot;&gt;\n                &lt;div class=&quot;avatar mb-3&quot;&gt;\n                    &lt;img class=&quot;card-img-top rounded-circle&quot; src=&quot;{{ profile_data.subimage.url }}&quot; alt=&quot;&quot;&gt;\n                &lt;\/div&gt;\n                &lt;h5 class=&quot;font-weight-bolder&quot;&gt;{{ profile_data.name }}&lt;\/h5&gt;\n                &lt;p class=&quot;mb-3 small text-center&quot;&gt;{{ profile_data.job|linebreaksbr }}&lt;\/p&gt;\n                &lt;div class=&quot;d-flex justify-content-around&quot;&gt;\n                    {% if profile_data.github %}\n                        &lt;a href=&quot;{{ profile_data.github }}&quot; target=&quot;_blank&quot;&gt;&lt;i class=&quot;fab fa-github fa-lg rounded btn-dark icon&quot;&gt;&lt;\/i&gt;&lt;\/a&gt;\n                    {% endif %}\n                    {% if profile_data.twitter %}\n                        &lt;a href=&quot;{{ profile_data.twitter }}&quot; target=&quot;_blank&quot;&gt;&lt;i class=&quot;fab fa-twitter fa-lg rounded btn-primary icon&quot;&gt;&lt;\/i&gt;&lt;\/a&gt;\n                    {% endif %}\n                    {% if profile_data.linkedin %}\n                        &lt;a href=&quot;{{ profile_data.linkedin }}&quot; target=&quot;_blank&quot;&gt;&lt;i class=&quot;fab fa-linkedin-in fa-lg rounded btn-info icon&quot;&gt;&lt;\/i&gt;&lt;\/a&gt;\n                    {% endif %}\n                    {% if profile_data.facebook %}\n                        &lt;a href=&quot;{{ profile_data.facebook }}&quot; target=&quot;_blank&quot;&gt;&lt;i class=&quot;fab fa-facebook-f fa-lg rounded btn-primary icon&quot;&gt;&lt;\/i&gt;&lt;\/a&gt;\n                    {% endif %}\n                    {% if profile_data.instagram %}\n                        &lt;a href=&quot;{{ profile_data.instagram }}&quot; target=&quot;_blank&quot;&gt;&lt;i class=&quot;fab fa-instagram fa-lg rounded btn-danger icon&quot;&gt;&lt;\/i&gt;&lt;\/a&gt;\n                    {% endif %}\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;\n\n{% endblock %}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">index.html<\/h2>\n\n\n\n<p>\u30c8\u30c3\u30d7\u30da\u30fc\u30b8\u306b\u753b\u50cf\u3092\u8868\u793a\u3055\u305b\u307e\u3059\u3002<br>\u00a0d-flex\u00a0flex-column\u00a0\u3067\u7e26\u4e26\u3073\u306b\u3057\u307e\u3059\u3002<br>justify-content-end\u3067\u53f3\u5bc4\u305b<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>{% extends &quot;app\/base.html&quot; %}\n\n{% block content %}\n\n&lt;div class=&quot;card top d-flex flex-column justify-content-end mb-4&quot;&gt;\n    &lt;img src=&quot;{{ profile_data.topimage.url }}&quot; alt=&quot;&quot;&gt;\n    &lt;div class=&quot;overlay text-white p-5&quot;&gt;\n        &lt;h1 class=&quot;title&quot;&gt;{{ profile_data.title }}&lt;\/h1&gt;\n        &lt;h5 class=&quot;subtitle&quot;&gt;{{ profile_data.subtitle }}&lt;\/h5&gt;            \n    &lt;\/div&gt;\n&lt;\/div&gt;\n\n{% endblock %}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">CSS<\/h2>\n\n\n\n<p>\u5e38\u306b\u30d5\u30c3\u30bf\u30fc\u304c\u4e0b\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>main {\n    flex: 1;\n}<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>portfolio\u30d5\u30a9\u30eb\u30c0\u30fc\u4f5c\u6210 .gitignore\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210 \u4eee\u60f3\u74b0\u5883\u306e\u4f5c\u6210 \u4eee\u60f3\u74b0\u5883\u306e\u5b9f\u884c requirements.txt\u4f5c\u6210 \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210 settings.py\u3092\u4fee\u6b63 \uff44 <\/p>\n","protected":false},"author":1,"featured_media":450,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jin_ogp_image_url":"","_jin_last_featured_id":0,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-442","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-django"],"_links":{"self":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/442","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=442"}],"version-history":[{"count":12,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/442\/revisions"}],"predecessor-version":[{"id":558,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/442\/revisions\/558"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/media\/450"}],"wp:attachment":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}