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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。