{"id":310,"date":"2021-04-17T10:34:30","date_gmt":"2021-04-17T01:34:30","guid":{"rendered":"http:\/\/www.agile-software.site\/?p=310"},"modified":"2021-09-05T14:31:26","modified_gmt":"2021-09-05T05:31:26","slug":"django_view","status":"publish","type":"post","link":"https:\/\/agile-software.net\/?p=310","title":{"rendered":"Django_view"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">views.py<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\u95a2\u6570\u30d9\u30fc\u30b9\u30d3\u30e5\u30fc<\/li><li>\u30af\u30e9\u30b9\u30d9\u30fc\u30b9\u30d3\u30e5\u30fc<\/li><\/ul>\n\n\n\n<p>2\u901a\u308a\u306e\u66f8\u304d\u65b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\">\u95a2\u6570\u30d9\u30fc\u30b9\u30d3\u30e5\u30fc<\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\">\u30af\u30e9\u30b9\u30d9\u30fc\u30b9\u30d3\u30e5\u30fc<\/h2>\n\n\n\n<p>django.views.generic.ListView\u30af\u30e9\u30b9\u3092\u7d99\u627f\u3057\u3066\u72ec\u81ea\u306eIndexView\u3092\u4f5c\u6210<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.contrib.auth.mixins import LoginRewuireMixin\nfrom django.views import generic\nfrom .models import Bmi\n\nclass IndexView(LoginRewuiredMixin,generic.ListView):\n    model=Bmi\n    template_name=&#39;example.html&#39;\n\n    def get_queryset(self):\n      return Bmi.objects.filter(user=self.request.user)<\/code><\/pre><\/div>\n\n\n\n<p>Mixin\u30af\u30e9\u30b9\u3092\u7d99\u627f\u3059\u308b\u3053\u3068\u3067\u30ed\u30b0\u30a4\u30f3\u5236\u9650<br>model\u306bBmi\u30e2\u30c7\u30eb\u3092\u30bb\u30c3\u30c8\u3059\u308b\u3053\u3068\u3067Bmi\u30e2\u30c7\u30eb\u3068IndexView\u3092\u7d10\u3065\u3051\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<p>get_queryset\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u6e21\u3059\u30c7\u30fc\u30bf\u3092\u30ed\u30b0\u30a4\u30f3\u30e6\u30fc\u30b6\u30fc\u306b\u7d10\u3065\u304f\u30c7\u30fc\u30bf\u306b\u7d5e\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-jin-gb-block-box-with-headline kaisetsu-box1\"><div class=\"kaisetsu-box1-title\"><\/div>\n<p>1\u884c\u76ee\u3067\u306fHttpResponse\u3068\u3044\u3046\u30af\u30e9\u30b9\u3092import\u3059\u308b\u3053\u3068\u3067<br>\u4f5c\u88fd\u3057\u305findex\u95a2\u6570\u306e\u5f15\u6570\u3068\u3057\u3066request\u3092<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-jin-gb-block-box-with-headline kaisetsu-box5\"><div class=\"kaisetsu-box5-title\"><\/div>\n<ul class=\"wp-block-list\"><li>View:\u3069\u306e\u3088\u3046\u306a\u7528\u9014\u3067\u4f7f\u3046\u306b\u3057\u3066\u3082\u5fdc\u7528\u304c\u5229\u304d\u307e\u3059\u3002<\/li><li>TemplateView:\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u306b\u7279\u5316\u3057\u305fView\u30af\u30e9\u30b9<\/li><li>RedirectView:\u4efb\u610f\u306eURL\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u3053\u3068\u306b\u7279\u5316\u3057\u305fView\u30af\u30e9\u30b9<\/li><\/ul>\n<\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>from django.http import HttpResponse\n\n# Create your views here.\ndef index(request):\n    return HttpResponse(&quot;Hello,world.&quot;)<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>    @classonlymethod\n    def as_view(cls, **initkwargs):\n        &quot;&quot;&quot;Main entry point for a request-response process.&quot;&quot;&quot;\n        for key in initkwargs:\n            if key in cls.http_method_names:\n                raise TypeError(&quot;You tried to pass in the %s method name as a &quot;\n                                &quot;keyword argument to %s(). Don&#39;t do that.&quot;\n                                % (key, cls.__name__))\n            if not hasattr(cls, key):\n                raise TypeError(&quot;%s() received an invalid keyword %r. as_view &quot;\n                                &quot;only accepts arguments that are already &quot;\n                                &quot;attributes of the class.&quot; % (cls.__name__, key))\n\n        def view(request, *args, **kwargs):\n            self = cls(**initkwargs)\n            if hasattr(self, &#39;get&#39;) and not hasattr(self, &#39;head&#39;):\n                self.head = self.get\n            self.request = request\n            self.args = args\n            self.kwargs = kwargs\n            return self.dispatch(request, *args, **kwargs)\n        view.view_class = cls\n        view.view_initkwargs = initkwargs\n\n        # take name and docstring from class\n        update_wrapper(view, cls, updated=())\n\n        # and possible attributes set by decorators\n        # like csrf_exempt from dispatch\n        update_wrapper(view, cls.dispatch, assigned=())\n        return view<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><strong>\u30af\u30e9\u30b9\u30d9\u30fc\u30b9\u6c4e\u7528\u30d3\u30e5\u30fc<\/strong><\/th><th><strong>\u8aac\u660e<\/strong><\/th><\/tr><\/thead><tbody><tr><td>View<\/td><td>\u30b7\u30f3\u30d7\u30eb\u306a\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><tr><td>TemplateView<\/td><td>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001\u4f55\u304b\u3092\u8868\u793a\u3059\u308b\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><tr><td>ListView<\/td><td>\u4e00\u89a7\u3092\u8868\u793a\u3059\u308b\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><tr><td>DetailView<\/td><td>\u8a73\u7d30\u30da\u30fc\u30b8\u3092\u8868\u793a\u3059\u308b\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><tr><td>CreateView<\/td><td>\u65b0\u3057\u304f\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0\u3059\u308b\u30d5\u30a9\u30fc\u30e0\u3092\u63d0\u4f9b\u3059\u308b\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><tr><td>UpdateView<\/td><td>\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3059\u308b\u30d5\u30a9\u30fc\u30e0\u3092\u63d0\u4f9b\u3059\u308b\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><tr><td>DeleteView<\/td><td>\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3059\u308b\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><tr><td>RedirectView<\/td><td>\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306b\u7279\u5316\u3057\u305f\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><tr><td>FormView<\/td><td>\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3092\u3059\u308b\u6c4e\u7528\u30d3\u30e5\u30fc<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ListView<\/h2>\n\n\n\n<p>\u8a18\u4e8b\u306e\u4e00\u89a7\u3092\u8868\u793a\u3059\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">urls.py\u306e\u4f5c\u6210<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">view.py\u306e\u4f5c\u6210<\/h3>\n\n\n\n<p>models.py\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u306e\u3069\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c6\u30fc\u30d6\u30eb\u3092\u4f7f\u3046\u304b\u6307\u5b9a\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">models.py\u306e\u4f5c\u6210<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">\u4f5c\u6210\u3057\u305f\u30e2\u30c7\u30eb\u306e\u53cd\u6620<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">html\u306e\u4f5c\u6210<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">DetailView<\/h2>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5165\u3063\u3066\u3044\u308b\u500b\u5225\u306e\u8a18\u4e8b\u3092\u8868\u793a\u3055\u305b\u308b\u306e\u306b\u4f7f\u3046\u3002<br>ListView\u306e\u5834\u5408\u3068\u9055\u3063\u3066\u3069\u306e\u30c7\u30fc\u30bf\u3092\u4f7f\u3046\u306e\u304b\u660e\u793a\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002<br>&lt;int:pk&gt;\u304c\u30c6\u30fc\u30d6\u30eb\u306b\u5165\u3063\u3066\u3044\u308b\u30c7\u30fc\u30bf\u3092\u5177\u4f53\u7684\u306b\u6307\u5b9a\u3059\u308b\u306e\u306b\u4f7f\u3044\u307e\u3059\u3002<br>Django\u3067\u306f\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\u3057\u305f\u969b\u306b\u81ea\u52d5\u7684\u306bid\u3068\u3044\u3046\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u4f5c\u6210\u3055\u308c\u3001primary key\u3068\u3057\u3066\u91cd\u8907\u3057\u306a\u3044\u756a\u53f7\u304c\u5272\u308a\u632f\u3089\u308c\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">urls.py\u306e\u4f5c\u6210<\/h3>\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    path(&#39;post\/&lt;int:pk&gt;\/&#39;, views.PostDetailView.as_view(), name=&#39;post_detail&#39;), \n]<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">views.py\u306e\u4f5c\u6210<\/h3>\n\n\n\nhttp:\/\/www.agile-software.site\/2021\/04\/25\/args-%e3%80%81-kwargsn%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e7%90%86%e8%a7%a3%e3%81%99%e3%82%8b\/\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>class PostDetailView(View):\n    def get(self, request, *args, **kwargs):\n        post_data = Post.objects.get(id=self.kwargs[&#39;pk&#39;])\n        return render(request, &#39;app\/post_detail.html&#39;, {\n            &#39;post_data&#39;: post_data\n        })<\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">html\u306e\u4f5c\u6210<\/h4>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">CreateView<\/h3>\n\n\n\n<p>\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067\u5165\u529b\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u3084\u308a\u53d6\u308a\u304c\u884c\u308f\u308c\u308b\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">urls.py\u306e\u4f5c\u6210<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">view.py\u306e\u4f5c\u6210<\/h4>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">html\u306e\u4f5c\u6210<\/h4>\n\n\n\n<h3 class=\"wp-block-heading\">\u6295\u7a3f\u524a\u9664(DeleteView)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">urls.py\u306e\u4f5c\u6210<\/h4>\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;post\/&lt;int:pk&gt;\/&#39;, views.PostDetailView.as_view(), name=&#39;post_detail&#39;),\n    path(&#39;post\/new\/&#39;, views.CreatePostView.as_view(), name=&#39;post_new&#39;),\n    path(&#39;post\/&lt;int:pk&gt;\/edit\/&#39;, views.PostEditView.as_view(), name=&#39;post_edit&#39;),\n    path(&#39;post\/&lt;int:pk&gt;\/delete\/&#39;, views.PostDeleteView.as_view(), name=&#39;post_delete&#39;), # \u8ffd\u52a0\n]<\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">view.py\u306e\u4f5c\u6210<\/h4>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>class PostDeleteView(LoginRequiredMixin, View):\n    def get(self, request, *args, **kwargs):\n        post_data = Post.objects.get(id=self.kwargs[&#39;pk&#39;])\n        return render(request, &#39;app\/post_delete.html&#39;, {\n            &#39;post_data&#39;: post_data\n        })\n\n    def post(self, request, *args, **kwargs):\n        post_data = Post.objects.get(id=self.kwargs[&#39;pk&#39;])\n        post_data.delete()\n        return redirect(&#39;index&#39;)<\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">delete.html\u306e\u4f5c\u6210<\/h4>\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&lt;h2 class=&quot;my-4&quot;&gt;{{ post_data.title }}&lt;\/h2&gt;\n&lt;hr&gt;\n&lt;h5 class=&quot;my-4&quot;&gt;\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f&lt;\/h5&gt;\n&lt;form method=&quot;post&quot;&gt;\n    {% csrf_token %}\n    &lt;button class=&quot;btn btn-danger&quot; type=&quot;submit&quot;&gt;\u524a\u9664\u3059\u308b&lt;\/button&gt;\n&lt;\/form&gt;\n\n{% endblock %}<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">UpdateView<\/h3>\n\n\n\n<p>\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067\u5165\u529b\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u3084\u308a\u53d6\u308a\u304c\u884c\u308f\u308c\u308b\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">urls.py\u306e\u4f5c\u6210<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">view.py\u306e\u4f5c\u6210<\/h4>\n","protected":false},"excerpt":{"rendered":"<p>views.py \u95a2\u6570\u30d9\u30fc\u30b9\u30d3\u30e5\u30fc \u30af\u30e9\u30b9\u30d9\u30fc\u30b9\u30d3\u30e5\u30fc 2\u901a\u308a\u306e\u66f8\u304d\u65b9\u304c\u3042\u308a\u307e\u3059\u3002 \u95a2\u6570\u30d9\u30fc\u30b9\u30d3\u30e5\u30fc \u30af\u30e9\u30b9\u30d9\u30fc\u30b9\u30d3\u30e5\u30fc django.views.generic.ListView\u30af\u30e9\u30b9\u3092\u7d99\u627f\u3057\u3066\u72ec\u81ea\u306eIndexView<\/p>\n","protected":false},"author":1,"featured_media":324,"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-310","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\/310","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=310"}],"version-history":[{"count":8,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/310\/revisions"}],"predecessor-version":[{"id":1694,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/310\/revisions\/1694"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/media\/324"}],"wp:attachment":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}