分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

一、虚拟环境.二、路由配置主页与404.三、2.x路由分发.四、伪静态.五、request对象.六、FBV与CBV.七、文件上传.

发布时间:2023-09-06 02:34责任编辑:熊小新关键词:配置文件上传

一、虚拟环境

‘‘‘解决版本共存1. 用pycharm选择File点击NewProject然后选择virtualenv创建一个纯净环境2. 打开下载的目录将venv文件夹下的所有文件(纯净的环境)copy到需要指定长期使用的文件夹下3. 再次创建项目时,将该环境(指定长期使用的文件夹下Scripts文件夹中的python.exe文件)添加到pycharm环境选择(System Interpreter)中4. 为该环境添加需要处理的版本共存包‘‘‘

二、路由配置主页与404

‘‘‘路由匹配从上往下进行匹配,如果一轮都没有匹配成功,加/进行匹配路由层:from django.urls import path, re_pathurlpatterns = [ ???# 主页最上方配置 ???re_path(‘^$‘, root, name="root"), ???re_path(‘^index/$‘, index), ???re_path(‘^home/$‘, home), ???# 其他路由... ???# 404配在最下方 ???re_path(‘.*/$‘, error)]视图层:from django.shortcuts import render, redirect, reverse# 主页def root(request): ???return render(request, ‘root.html‘)def index(request): ???return redirect(reverse(‘root‘))def home(request): ???return redirect(reverse(‘root‘))# 404def error(request): ???return render(request, ‘error.html‘)‘‘‘

三、2.x路由分发

‘‘‘1.无名称空间主路由:path(‘app01/‘, include(‘app01.urls‘))子路由:path(‘test/‘, views.test)2.有名称空间 有名称空间,与1版本不同,要将名称空间名和视图函数名放到一个数组中去主路由:path(‘app01/‘, include((‘app01.urls‘, ‘app01‘))),子路由:path(‘test/‘, views.test, name=‘test‘)模板层:{% url ‘app01:test‘ %}‘‘‘

四、伪静态

‘‘‘动态页面:数据内容会发生变化的页面静态页面:数据内容不会发生变化的页面针对SEO(搜索引擎优化),静态页面更容易被搜索引擎网站收录伪静态就是将动态页面伪装成静态页面,容易被搜索引擎网站收录,从而增加搜索概率,提高流量‘‘‘‘‘‘#起了路由别名:路由层:url(‘^index/$‘, views.index),url(‘^article/(?P<id>(\d+)).html/$‘, views.article, name=‘article‘)视图函数层:def index(request): ???return render(request, ‘index.html‘)def article(request, id): ???return render(request, ‘article.html‘, {‘id‘: id})模板层:index.html<a href="{% url ‘article‘ 1 %}">第一篇文章</a><a href="{% url ‘article‘ 2 %}">第二篇文章</a><a href="{% url ‘article‘ 3 %}">第三篇文章</a>article.html<h1>第{{ id }}篇文章</h1>#没有起路由别名:路由层:url(‘^index/$‘, views.index),url(‘^article/(?P<id>(\d+)).html/$‘, views.article)视图函数层:def index(request): ???return render(request, ‘index.html‘)def article(request, id): ???return render(request, ‘article.html‘, {‘id‘: id})模板层:index.html<a href="/article/1.html/">第一篇文章</a><a href="/article/2.html/">第二篇文章</a><a href="/article/3.html/">第三篇文章</a>article.html<h1>第{{ id }}篇文章</h1>‘‘‘

五、request对象

‘‘‘请求/index/?abc=1231. method: 请求方式 ???2. GET: 存放get的请求数据 ??结果:<QueryDict: {‘abc‘: [‘123‘]}>3. POST: 存放post的请求数据(本质是从bdoy中取出来)4. body: post提交的数据(不能直接查看)5. path: 请求的路径,不带参数 ??结果:/index/ ?????6. request.get_full_path(): 请求路径,带参数 ??结果:/index/?abc=1237. FILES: 文件数据8. encoding: 编码格式9. META: 数据大汇总的字典10.is_ajax(): 是否是ajax请求 #False‘‘‘

六、FBV与CBV

‘‘‘FBV:function base views 函数方式完成视图响应CBV:class base views 类方式完成视图响应‘‘‘‘‘‘注意:在settings.py下的中间件配置中找到含有csrf的那条代码,将它关闭这样就可以跳过post请求的安全认证请求/path/123视图层:from django.shortcuts import HttpResponsefrom django.views import Viewclass CBVView(View): ???def get(self, request,id): ???????print(‘get请求!‘,id) #id=123 ???????return render(request,‘cbv.html‘) ???def post(self, request,id): ???????print(‘post请求!‘,id) #id=456 ???????print(request.POST.get(‘msg‘,None)) #获取提交的数据 ???????return HttpResponse("响应post请求")路由层:url(‘^path/(?P<id>\d+)/$‘, views.CBVView.as_views())模板层:<form action="/path/456/" method="post"> ???<input type="text" name="msg"> ???<input type="submit"></form>‘‘‘

七、文件上传

‘‘‘前端:upload.html页面1.往自身路径发送post请求,要将第四个中间件注释2.multipart/form-data格式允许发送文件3.multiple属性表示可以多文件操作 <form action="" method="post" enctype="multipart/form-data"> ???<input type="file" name="files" multiple="multiple"> ???<input type="submit" value="上传"></form>后台:re_path(‘^upload/$‘, upload)def upload(request): ???if request.method == "GET": ?????????return render(request, ‘upload.html‘) ???if request.method == "POST": ???????# 如果一个key对应提交了多条数据,get取最后一个数据,getlist取全部数据 ???????last_file = request.FILES.get(‘files‘, None) ???????files = request.FILES.getlist(‘files‘, None) ???????????????# import django.core.files.uploadedfile.TemporaryUploadedFile ???????# file是TemporaryUploadedFile类型,本质是对系统file类封装,就是存放提交的文件数据的文件流对象,file.name就可以获得字符串类型的file的名字 ???????for file in files: ?????????????with open(file.name, ‘wb‘) as f: ???????????????for line in file: ?????????????????# 从file中去数据写到指定文件夹下的指定文件中,大文件用file.chunks() ???????????????????f.write(line) ???????return HttpResponse(‘上传成功‘) ???????????????注意: ?拼接从get中拿数据,body中数据从post中拿‘‘‘

一、虚拟环境.二、路由配置主页与404.三、2.x路由分发.四、伪静态.五、request对象.六、FBV与CBV.七、文件上传.

原文地址:https://www.cnblogs.com/lizeqian1994/p/10468790.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved