{"id":3634,"date":"2021-07-27T12:03:27","date_gmt":"2021-07-27T12:03:27","guid":{"rendered":"https:\/\/www.bearloga.space\/?page_id=3634"},"modified":"2021-07-27T12:03:27","modified_gmt":"2021-07-27T12:03:27","slug":"django-zagruzka-fajlov","status":"publish","type":"page","link":"https:\/\/www.bearloga.space\/en\/django-zagruzka-fajlov\/","title":{"rendered":"Django \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0434\u043b\u044f \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b (\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043f\u0435\u0441\u043d\u0438, PDF, \u0441\u043b\u043e\u0432\u0430 \u2026).&nbsp;\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043c, \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u0435.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0438\u0433\u0440\u044b \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 Python (PIL).&nbsp;\u0422\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u043e\u0440\u043c\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0432 \u043d\u0430\u0448\u0435\u043c myapp \/ forms.py \u2014<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#-*- coding: utf-8 -*-\nfrom django import forms\n\nclass ProfileForm(forms.Form):\n   name = forms.CharField(max_length = 100)\n   picture = forms.ImageFields()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u2014 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e&nbsp;<strong>\u0444\u043e\u0440\u043c\u044b<\/strong>&nbsp;.&nbsp;<strong>ImageField<\/strong>&nbsp;.&nbsp;ImageField \u0443\u0431\u0435\u0434\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c.&nbsp;\u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0444\u043e\u0440\u043c\u044b \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u00ab\u041f\u0440\u043e\u0444\u0438\u043b\u044c\u00bb, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.&nbsp;\u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 myapp \/ models.py \u2014<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">from django.db import models\n\nclass Profile(models.Model):\n   name = models.CharField(max_length = 50)\n   picture = models.ImageField(upload_to = 'pictures')\n\n   class Meta:\n      db_table = \"profile\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438, ImageField \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442:&nbsp;<strong>upload_to<\/strong>&nbsp;.&nbsp;\u042d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0436\u0435\u0441\u0442\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0435, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432\u0430\u0448\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.&nbsp;\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 MEDIA_ROOT, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 settings.py.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0424\u043e\u0440\u043c\u0430 \u0438 \u041c\u043e\u0434\u0435\u043b\u044c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 myapp \/ views.py \u2014<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#-*- coding: utf-8 -*-\nfrom myapp.forms import ProfileForm\nfrom myapp.models import Profile\n\ndef SaveProfile(request):\n   saved = False\n   \n   if request.method == \"POST\":\n      #Get the posted form\n      MyProfileForm = ProfileForm(request.POST, request.FILES)\n      \n      if MyProfileForm.is_valid():\n         profile = Profile()\n         profile.name = MyProfileForm.cleaned_data[\"name\"]\n         profile.picture = MyProfileForm.cleaned_data[\"picture\"]\n         profile.save()\n         saved = True\n   else:\n      MyProfileForm = Profileform()\n\t\t\n   return render(request, 'saved.html', locals())<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u041d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044c, \u0435\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 ProfileForm, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440:\u00a0<strong>request.FILES<\/strong>\u00a0.\u00a0\u0415\u0441\u043b\u0438 \u043d\u0435 \u043f\u0440\u043e\u0439\u0442\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0444\u043e\u0440\u043c\u044b \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f, \u0434\u0430\u0432\u0430\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0435<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u0435\u043d \u0448\u0430\u0431\u043b\u043e\u043d&nbsp;<strong>save.html \u0438<\/strong>&nbsp;\u0448\u0430\u0431\u043b\u043e\u043d&nbsp;<strong>profile.html<\/strong>&nbsp;\u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u2014<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>myapp \/ templates \/ save.html<\/strong>&nbsp;\u2014<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;html&gt;\n   &lt;body&gt;\n   \n      {% if saved %}\n         &lt;strong&gt;Your profile was saved.&lt;\/strong&gt;\n      {% endif %}\n      \n      {% if not saved %}\n         &lt;strong&gt;Your profile was not saved.&lt;\/strong&gt;\n      {% endif %}\n      \n   &lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>myapp \/ templates \/ profile.html<\/strong>&nbsp;\u2014<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;html&gt;\n   &lt;body&gt;\n   \n      &lt;form name = \"form\" enctype = \"multipart\/form-data\" \n         action = \"{% url \"myapp.views.SaveProfile\" %}\" method = \"POST\" &gt;{% csrf_token %}\n         \n         &lt;div style = \"max-width:470px;\"&gt;\n            &lt;center&gt;  \n               &lt;input type = \"text\" style = \"margin-left:20%;\" \n               placeholder = \"Name\" name = \"name\" \/&gt;\n            &lt;\/center&gt;\n         &lt;\/div&gt;\n\t\t\t\n         &lt;br&gt;\n         \n         &lt;div style = \"max-width:470px;\"&gt;\n            &lt;center&gt; \n               &lt;input type = \"file\" style = \"margin-left:20%;\" \n                  placeholder = \"Picture\" name = \"picture\" \/&gt;\n            &lt;\/center&gt;\n         &lt;\/div&gt;\n\t\t\t\n         &lt;br&gt;\n         \n         &lt;div style = \"max-width:470px;\"&gt;\n            &lt;center&gt; \n            \n               &lt;button style = \"border:0px;background-color:#4285F4; margin-top:8%; \n                  height:35px; width:80%; margin-left:19%;\" type = \"submit\" value = \"Login\" &gt;\n                  &lt;strong&gt;Login&lt;\/strong&gt;\n               &lt;\/button&gt;\n               \n            &lt;\/center&gt;\n         &lt;\/div&gt;\n         \n      &lt;\/form&gt;\n      \n   &lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u0430\u0440\u0430 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443: myapp \/ urls.py<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">from django.conf.urls import patterns, url\nfrom django.views.generic import TemplateView\n\nurlpatterns = patterns(\n   'myapp.views', url(r'^profile\/',TemplateView.as_view(\n      template_name = 'profile.html')), url(r'^saved\/', 'SaveProfile', name = 'saved')\n)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u00ab\/ myapp \/ profile\u00bb \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d profile.html:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/coderlessons.com\/wp-content\/uploads\/2019\/07\/uploading_image.png\" alt=\"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0418 \u043d\u0430 \u043f\u043e\u0441\u0442 \u0444\u043e\u0440\u043c\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u2014<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/coderlessons.com\/wp-content\/uploads\/2019\/07\/form_post_template.png\" alt=\"\u0428\u0430\u0431\u043b\u043e\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435&nbsp;<strong>ImageField<\/strong>&nbsp;\u0432 Model \u0438 Form \u043d\u0430&nbsp;<strong>FileField<\/strong>&nbsp;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0434\u043b\u044f \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b (\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043f\u0435\u0441\u043d\u0438, PDF, \u0441\u043b\u043e\u0432\u0430 \u2026).&nbsp;\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043c, \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u0435. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[118],"tags":[],"class_list":["post-3634","page","type-page","status-publish","hentry","category-dzhango"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/pages\/3634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/comments?post=3634"}],"version-history":[{"count":0,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/pages\/3634\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/media?parent=3634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/categories?post=3634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bearloga.space\/en\/wp-json\/wp\/v2\/tags?post=3634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}