Django,django order by

  Django,django order by

  学习笔记,仅供参考。

  文件上传

  上传说明

  文件上传必须采用提交后的方式。上传文件时,表单中必须有一个enctype=multipart/form-data 的参数,以包含文件内容数据。在表单中,我们通常上传标签输入type=file name=xxx 的文件。Type= file 用于产生一个表单控件,name=xxx 与服务器相关联。在服务器端,我们可以通过request返回的file stream对象得到name=xxx 对应的上传文件。文件[xxx]。如果我们使用变量名文件来接收请求。FILES[xxx],即file=request。文件[xxx],那么该文件将与文件流对象绑定。我们可以通过file.name得到上传文件的文件名,通过file.file得到上传文件的字节流对象(相当于f=open(文件名,rb)中f得到的对象)。如果上传的文件是图像类型,它可以被定义为模型。image field type image _ file=models。ImageField (upload _ to= images/)。如果属性类型是imagefield,则需要PIP Install Pilow。

  上传文件的表单编写方法

  !-文件:静态/上传. html -

  超文本标记语言

  头

  标题文件上传/标题

  meta charset=utf-8

  /头

  身体

  H1上传文件/h1

  form method= post action=/upload/ enctype= multipart/form-data

  输入类型=file name=myfile/br

  输入类型=提交值=上传

  /表单

  /body

  /html

  例如

  现在,在这个例子中,我想上传文件。

  现在,我们在mywebsite_bookstore项目下的templates文件夹模板下创建一个upload.html文件:

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  上传文件标题/标题

  /头

  身体

  H2文件上传/h2

  form action=/upload/ method= POST enctype= multipart/form-data

  输入类型=文件名称=我的文件

  输入类型=提交值=上传

  /表单

  /body

  /html

  在主视图模块views.py中添加视图功能:

  定义on_upload(请求):

  if request.method==GET :

  返回render(请求,“upload.html”)

  elif request.method==POST :

  文件=请求。文件[我的文件]

  Html=上载的文件是:{} br文件名是{} 。格式(文件,文件名)

  Return HttpResponse(html)注意,我们得到的file对象不在我的磁盘上,而是在内存中。

  在主urls.py模块中添加一个路由:

  从django.urls导入re_path

  来自django.contrib导入管理

  从django.conf.urls导入包括

  从。导入视图

  urlpatterns=[

  re_path(r^admin/,管理网站网址),

  re_path(r^upload/$,views.on_upload),

  ]

  现在,我们向http://127.0.0.1:8000/upload/发出请求,并选择要上传的文件:

  点击上传,出现以下页面:

  现在,我想将上传的图像TX.jpg保存在mywebsite_bookstore项目下的static/image文件夹中。

  让我们修改views.py文件:

  定义on_upload(请求):

  if request.method==GET :

  返回render(请求, upload.html )

  elif request.method==POST :

  文件=请求。文件[我的文件]

  Html=上载的文件是:{} br文件名是{} 。格式(文件,文件名)

  with open(r f:\ my studio \ python studio \ goat bishop . project 01 \ Django \ my website _ book store \ static \ image \

  file.name, wb )作为f:

  b=file.file.read()

  #读取缓存文件的内容

  f .写(b)

  Return HttpResponse(html)注意,这里的文件保存路径是绝对路径。我们也可以通过BASE_DIR写下保存文件的绝对路径(BASE_DIR会告诉我们项目所在的绝对路径)。

  为此,我们需要在settings.py中自定义一个文件保存路径:

  #自定义变量UPLOAD_DIR用于绑定上传文件的保存路径。

  upload _ dir=OS . path . join(base _ dir, static/image )在主views.py中导入当前项目的配置文件settings.py,修改view函数on_upload:

  从django.conf导入设置

  导入操作系统

  定义on_upload(请求):

  if request.method==GET :

  返回render(请求,“upload.html”)

  elif request.method==POST :

  文件=请求。文件[我的文件]

  Html=上载的文件是:{} br文件名是{} 。格式(文件,文件名)

  用open(os.path.join(设置。UPLOAD_DIR,file.name),‘WB’)作为f:

  b=file.file.read()

  f .写(b)

  返回HttpResponse(html)一般情况下,文件本身不会保存在我们的数据库中,只会保存文件的一些信息(比如文件名和文件保存路径)。

  我们发送一个请求到http://127 . 0 . 0 . 1:8000/upload/upload/并上传文件,看看我们的F:\ My Studio \ Python Studio \ goat bishop . project 01 \ Django \ My Website _ book store \ Static \ Image \ path中有没有TX.jpg的文件:

  很好!

  转载请联系作者获得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: