{"id":503,"date":"2021-03-04T18:30:00","date_gmt":"2021-03-04T09:30:00","guid":{"rendered":"https:\/\/www.sea2800.com\/?p=503"},"modified":"2021-05-18T00:58:52","modified_gmt":"2021-05-17T15:58:52","slug":"django%e3%80%80%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%97%e3%81%9f%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e3%81%a7%e6%8a%95%e7%a8%bf%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/www.sea2800.com\/?p=503","title":{"rendered":"Django\u3000\u30ed\u30b0\u30a4\u30f3\u3057\u305f\u30e6\u30fc\u30b6\u30fc\u3067\u6295\u7a3f\u3059\u308b\u65b9\u6cd5"},"content":{"rendered":"\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<!-- test -->\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-7910153846163820\" data-ad-slot=\"9115942114\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>SNS\u306a\u3069\u306e\u52d5\u753b\u3084\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6295\u7a3f\u3059\u308b\u3068\u304d\u306b\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3092\u3042\u3089\u304b\u3058\u3081\u5165\u529b\u3057\u3066\u8ab0\u304c\u6295\u7a3f\u3057\u305f\u306e\u304b\u3092\u308f\u304b\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69fb4034cbef0\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69fb4034cbef0\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.sea2800.com\/?p=503\/#%E7%92%B0%E5%A2%83\" >\u74b0\u5883<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.sea2800.com\/?p=503\/#%E7%9C%81%E7%95%A5\" >\u7701\u7565<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.sea2800.com\/?p=503\/#%E3%82%B3%E3%83%BC%E3%83%89%E8%A7%A3%E8%AA%AC\" >\u30b3\u30fc\u30c9\u89e3\u8aac<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.sea2800.com\/?p=503\/#Modelspy\" >Models.py<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.sea2800.com\/?p=503\/#formspy\" >forms.py<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.sea2800.com\/?p=503\/#Viewspy\" >Views.py<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.sea2800.com\/?p=503\/#urlspy\" >urls.py<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.sea2800.com\/?p=503\/#post_uploadhtml\" >post_upload.html<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%92%B0%E5%A2%83\"><\/span>\u74b0\u5883<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Django3.1<\/li><li>python 3.7.3<\/li><li>Visual Studio Code<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%9C%81%E7%95%A5\"><\/span>\u7701\u7565<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>\u30e6\u30fc\u30b6\u30fc\u306e\u4f5c\u6210\u3001\u767b\u9332\u65b9\u6cd5\u3000\u30e6\u30fc\u30b6\u30fc\u30da\u30fc\u30b8\u306e\u8868\u793a<\/li><li>django \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u3000\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210<\/li><\/ul>\n\n\n\n<p>\u7701\u7565\u3055\u308c\u305f\u90e8\u5206\u3082\u6c17\u306b\u306a\u308b\u65b9\u306f\u3053\u3061\u3089\u306e\u30b5\u30a4\u30c8\u3092\u898b\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u304b\u306a\u308a\u3053\u306e\u4eba\u306e\u30d6\u30ed\u30b0\u3092\u30d9\u30fc\u30b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/blog.narito.ninja\/detail\/38\/\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%82%B3%E3%83%BC%E3%83%89%E8%A7%A3%E8%AA%AC\"><\/span>\u30b3\u30fc\u30c9\u89e3\u8aac<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Modelspy\"><\/span>Models.py<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from django.db import models \nfrom django.conf import settings\nfrom django.conf import settings\nfrom django.utils import timezone\nimport random string\n\ndef random_url():\n     chars = '0123456789abcdefghijkmnopqrstuvwxzyABCDEFGHIJKLMNOPQRSTUVWXYZ'\n     url = ''.join(random.choice(chars)for i in range(16))\n     return url\n\nclass Post(models. Model):\n     user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)\n     title = models.charField(_('\u30bf\u30a4\u30c8\u30eb')max_length=150)\n\u3000\u3000\u3000post = models.TextField(_('\u5185\u5bb9'))\n     url = models.UrlField(_('URL')blank = True)\n     slug = models.SlugField(unique=True, default=random_url )\n     create_day = models.DateTimeField(_('\u4f5c\u6210\u65e5',default=timezone.now) \n     def get_absolute_url(self):\n        return reversed('series', kwargs={'slug': self.slug})\n     def __str__(self):\n         return self.title\n\n     \n \n<\/code><\/pre>\n\n\n\n<p>models.ForeignKey \u306e\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u3092\u7d50\u3073\u3064\u3051\u307e\u3059\u3002settings.AUTH_USER_MODEL\u3068\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u304csettings.py \u306e\u30d5\u30a1\u30a4\u30eb\u5185\u3067user\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u306f\u63a8\u5968\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001(User \u301c )\u3067\u3082\u53ef\u80fd\u3067\u3059\u3002on_delete=models.CASCADE\u3000\u3067\u30e6\u30fc\u30b6\u30fc\u3092\u524a\u9664\u3057\u305f\u6642\u306b\u6295\u7a3f\u3057\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3082\u4e00\u7dd2\u306b\u524a\u9664\u3059\u308b\u3088\u3046\u306b\u6307\u793a\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>UrlField \u5185\u306b\u3042\u308bblank=True\u306f\u3001URL\u3092\u5165\u529b\u3057\u306a\u304f\u3066\u3082OK\u3068\u3044\u3046\u3053\u3068\u3092\u6307\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>models.SlugField(unique=True, default=random_url)<\/p>\n\n\n\n<p>\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u306frandom_url\u3067\uff10\u304b\u3089\u5927\u6587\u5b57Z\u307e\u3067\u306e\uff16\uff10\u6587\u5b57\u3092\u30e9\u30f3\u30c0\u30e0\u306b\uff11\uff16\u500b\u9078\u3093\u3060\u3082\u306e\u3092Url\u3068\u3057\u3066\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002unique =True\u3067\u88ab\u3063\u3066\u3057\u307e\u3063\u305f\u3089\u4f5c\u308c\u306a\u3044\u3088\u3046\u306b\u6307\u793a\u3057\u3066\u3044\u307e\u3059\u30021\/60\u306e16\u4e57(60\u00d760\u309215\u56de\u7e70\u308a\u8fd4\u3059\u5c11\u306a\u304f\u3066\u3082100\u4eac\u4ee5\u4e0a\uff09\u306e\u78ba\u7387\u3067\u3059\u304c\u5ff5\u306e\u305f\u3081\u306b\u88ab\u3089\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>def get_absolute_url(self):return reversed(&#8216;series&#8217;, kwargs={&#8216;slug&#8217;: self.slug})<\/p>\n\n\n\n<p>\u3067Url\u306e\u6307\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"formspy\"><\/span>forms.py<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from django import forms\nfrom \nclass PostForm(forms.ModelForm): \n    def __init__(self, *args, **kwargs): \n        super().__init__(*args, **kwargs) for field in self.fields.values(): \n        field.widget.attrs&#91;'class'] = 'form-control'\n        class Meta: \n        model = Post\n        fields = ('title','post',)\n<\/code><\/pre>\n\n\n\n<p>\u3053\u3053\u306f\u30e2\u30c7\u30eb\u304b\u3089\u53c2\u7167\u3057\u3066\u30d5\u30a9\u30fc\u30e0\u304b\u3089\u3069\u3053\u306e\u9805\u76ee\u306b\u5165\u308c\u308b\u306e\u304b\u3092\u6307\u793a\u3059\u308b\u753b\u9762\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001model Post\u304b\u3089\u30bf\u30a4\u30c8\u30eb\u3068\u672c\u6587\u3092\u5165\u529b\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Viewspy\"><\/span>Views.py<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from .form import  PostForm\nfrom .mixins import OnlyYouMixin\nfrom django.views import generic \nclass Top(generic.ListView):\n    \"\"\"\u516c\u958b\u8a18\u4e8b\u306e\u4e00\u89a7\u3092\u8868\u793a\u3059\u308b\u3002\"\"\"\n    model = Movie\n    template_name = 'top.html'\n    paginate_by = 10\n\nclass PostUpload(OnlyYouMixin, generic.CreateView):\n    template_name = 'app\/post_upload.html'\n    form_class = PostForm\n    def form_valid(self,form):\n        form.instance.user = self.request.user\n        return super().form_valid(form)\n    def get_success_url(self):\n        return resolve_url('APP:Top')\nclass Post(generic.DetailView):\n     template_name = 'app\/post.html\n<\/code><\/pre>\n\n\n\n<p>def form_valid(self, form): \u3092\u547c\u3073\u51fa\u3057\u3001form.instance.user = self.request.user \u3092\u4f7f\u3046\u3053\u3068\u3067Model Post\u5185\u306b\u3042\u308bUser\u306e\u9805\u76ee\u304b\u3089\u73fe\u5728\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u308b\u30e6\u30fc\u30b6\u30fc\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3000\u5b8c\u4e86\u3057\u305f\u3089Top\u753b\u9762\u306b\u623b\u308b\u3088\u3046\u306b\u6307\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3000\u3061\u306a\u307f\u306b\u3000OnlyYouMixin \u3067\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u3057\u305f\u30e6\u30fc\u30b6\u30fc\u3057\u304b\u5165\u308c\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"urlspy\"><\/span> urls.py<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u30a2\u30d7\u30ea\u30d5\u30a9\u30eb\u30c0\u306e\u4e2d\u306burls.py \u3092\u65b0\u305f\u306b\u4f5c\u308a\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from django.urls import path,include\nfrom django.contrib.auth import admin\nfrom . models import User\nfrom . import views\n\npath('', views.Top.as_view(), name='TOP'),\n#\u6295\u7a3f\u3059\u308b\u3082\u306e\npath('user&lt;int:pk>\/upload',views.PostUpload.as_view(),name='PostUpload'),\n#\u6295\u7a3f\u3082\u306e\n path('&lt;slug:slug>',views.Post.as_view(),name = 'post'<\/code><\/pre>\n\n\n\n<p>user&lt;int:pk>\u3067\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u306e\u53d6\u5f97\u5f8cUSER\u30da\u30fc\u30b8\u304b\u3089\u6295\u7a3f\u753b\u9762\u306b\u79fb\u884c\u3059\u308b <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"post_uploadhtml\"><\/span>post_upload.html <span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{% block content %}\n{% load static %}\n{% for field in form %}\n    &lt;div class=\"form-group\">\n        &lt;label for=\"{{ field.id_for_label }}\">{{ field.label_tag }}&lt;\/label>\n        {{ field.value }}\n    &lt;\/div>\n    {% endfor %}\n\n    &lt;form  enctype=\"multipart\/form-data\" action=\"{% url 'register:user_data_input' %}\" method=\"POST\">\n        &lt;button type=\"submit\" class=\"btn btn-primary btn-lg\">\u623b\u308b&lt;\/button>\n        {% for field in form %}{{ field.as_hidden }}{% endfor %}\n        {% csrf_token %}\n    &lt;\/form>\n    &lt;hr>\n    &lt;form action=\"{% url 'register:user_data_create' %}\" method=\"POST\">\n        &lt;button type=\"submit\" class=\"btn btn-primary btn-lg\">\u9001\u4fe1&lt;\/button>\n        {% for field in form %}{{ field.as_hidden }}{% endfor %}\n        {% csrf_token %}\n    &lt;\/form>\n\n{% endblock %}<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u6295\u7a3f\u753b\u9762\u306e\u8a2d\u5b9a\u306f\u5b8c\u4e86\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u3067&#8221;python manage.py runserver  &#8220;\u3092\u5165\u529b\u3057\u3066\u52d5\u304b\u305b\u305f\u3089\u52dd\u3061\uff01<\/p>\n\n\n\n<p>\u753b\u50cf\u306f\u958b\u3044\u305f\u6642\u306b\u6295\u7a3f\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<!-- test -->\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-7910153846163820\" data-ad-slot=\"9115942114\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>SNS\u306a\u3069\u306e\u52d5\u753b\u3084\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6295\u7a3f\u3059\u308b\u3068\u304d\u306b [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,8],"tags":[],"class_list":["post-503","post","type-post","status-publish","format-standard","hentry","category-django","category-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/posts\/503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=503"}],"version-history":[{"count":8,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/posts\/503\/revisions"}],"predecessor-version":[{"id":521,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/posts\/503\/revisions\/521"}],"wp:attachment":[{"href":"https:\/\/www.sea2800.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}