Django视图层、虚拟环境
一.虚拟环境安装
目的:为了解决版本共存问题
'''
1.通过pip3安装虚拟环境:
-- pip3 install virtualenv
2.前往目标文件夹:
-- cd 目标文件夹 (C:\Virtualenv)
3.创建纯净虚拟环境:
-- virtualenv 虚拟环境名 (py3-env1)
了解:创建非纯净环境:
-- virtualenv-clone 本地环境 虚拟环境名
4.终端启动虚拟环境:
-- cd py3-env1\Scripts
-- activate
5.进入虚拟环境下的python开发环境
-- python3
6.关闭虚拟环境:
-- deactivate
'''
pycharm环境下,安装虚拟环境:
1.用pycharm选择virtualenv创建一个纯净环境(创建python项目);
2.将环境拷贝到需要指定长期使用的文件夹下;
3.再次创建Django项目时,将该环境添加到已存在的pycharm环境中进行选择;
4.为该环境添加需要处理的版本共存包(django 2.1.7版本)
二.路由配置主页与404
路由层:
from django.urls import path, re_path
from app.views import *
urlpatterns = [ # 主页最上方配置
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')) #
def error(request):
return render(request, 'error.html')
三.Django 2.x版本路由分发
# 注:path匹配的是绝对路径的字符串,不使用正则语法 # 1.无名称空间
主路由:
path('app01/', include('app01.urls'))
子路由:
path('test/', views.test) # 2.有名称空间
主路由:
path('app01/', include(('app01.urls', 'app01'))) # urls的路径和名称空间是一个元组的形式组成的。
子路由:
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>
'''
五.request对象
'''
1. method: 请求方式
2. GET: get请求的参数
3. POST: post请求的参数(本质是从bdoy中取出来)
4. body: post提交的数据(不能直接查看)
5. path: 请求的路径,不带参数
6. request.get_full_path(): 请求路径,带参数
7. FILES: 文件数据
8. encoding: 编码格式
9. META: 数据大汇总的字典
'''
六.FBV与CBV
FBV:function base views 函数方式完成视图响应
CBV:class base views 类方式完成视图响应
视图层:
from django.shortcuts import HttpResponse
from django.views import View
class CBVView(View):
def get(self, request):
return HttpResponse("响应get请求")
def post(self, request):
return HttpResponse("响应post请求")
路由层:
url('^path/$', views.CBVView.as_views())
七.文件上传
前台:
前端: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类封装,就是存放提交的文件数据的文件流对象
for file in files:
with open(file.name, 'wb') as f:
for line in file: # 从file中去数据写到指定文件夹下的指定文件中
f.write(line)
return HttpResponse('上传成功')
Django视图层、虚拟环境的更多相关文章
- web框架开发-Django视图层
视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...
- Django视图层
本文目录 1 视图函数 2 HttpRequest对象 3 HttpResponse对象 4 JsonResponse 5 CBV和FBV 6 简单文件上传 回到目录 1 视图函数 一个视图函数,简称 ...
- Django 视图层
URL映射 1.分布式url映射 include()函数提供分布式url映射功能,使URL映射可以被编写在多个url.py文件中 from django.conf.urls import url fr ...
- django——视图层
1. 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...
- django视图层(views)
1.视图层概念 视图函数,其实就是一个简单的函数,它接收web请求并返回web响应(响应的可以是一个html,一个重定向,一个xml文档等等) 每个视图函数都负责返回一个HttpResponse对象. ...
- [Django框架之视图层]
[Django框架之视图层] 视图层 Django视图层, 视图就是Django项目下的views.py文件,它的内部是一系列的函数或者是类,用来专门处理客户端访问请求后处理请求并且返回相应的数据,相 ...
- DjangoMTV模型之视图层views及模板层template
Django视图层中views的内容 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容(render),也可以是一个重定向( ...
- $Django 虚拟环境,2.0、1.0路由层区别,Httprequest对象,视图层(fbv,cbv),文件上传
1 虚拟环境:解决问题同一台机器上可以运行不同版本的django, 1 用pychanrm创建--->files-->newproject--->选择虚拟环境 2 setting ...
- Django路由层与视图层、pycharm虚拟环境
一. Django路由层 路由层即对应项目文件下的urls.py文件.实际上每个APP中也可以有自己的urls.py路由层.templates文件夹及static文件夹.Django支持这么做,也为实 ...
- Django--路由层、伪静态页面、虚拟环境、视图层
路由层: 在路由匹配的时候,第一个参数是一个正则表达式,这也就意味着在路由匹配的时候按照正则匹配的规则去匹配,路由匹配的顺序是从上往下依次匹配的,只要匹配到一个,就会执行对应的函数,就不会执行下面的函 ...
随机推荐
- LeetCode(113):路径总和 II
Medium! 题目描述: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树,以及目标和 sum = ...
- CF508E
贪心题是很有趣的... 首先,本题为括号匹配问题,那么可以考虑进行栈模拟 然后,我们思考一下如何匹配:虽然题目中仅对右括号的位置提出了区域性要求,但可以发现,对能匹配上的栈顶括号立刻进行匹配一定是一种 ...
- Nginx详解十八:Nginx深度学习篇之Rewrite规则
Rewrite规则可以实现对url的重写,以及重定向 作用场景: 1.URL访问跳转,支持开发设计,如页面跳转,兼容性支持,展示效果等 2.SEO优化 3.维护:后台维护.流量转发等 4.安全 配置语 ...
- 论文阅读笔记九:SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS (DeepLabv1)(CVPR2014)
论文链接:https://arxiv.org/abs/1412.7062 摘要 该文将DCNN与概率模型结合进行语义分割,并指出DCNN的最后一层feature map不足以进行准确的语义分割,DCN ...
- hive和hbase比较(整理)
hive1.可以理解为一种SQL执行引擎,对SQL的支持最终转换为map/reduce任务2.不支持更新.删除操作,但可以插入3.任务不是实时执行,用时一般为数分钟到数小时4.本身可以不存储数据,只存 ...
- Junit4 IDEA测试学习一
1.Junit4 下载 https://github.com/junit-team/junit4/releases 4.12 还需要还导入hamcrest-core-1.3.jar 2.IDEA Te ...
- 优化 Markdown 在 Notepad++ 中的使用体验
选择一个强大而好用的文本编辑器,是进行 Web 开发和编程必不可少的一部分,甚至对于通常的写作,一个舒服的文本编辑器也会让你写起文字来觉得优雅而潇洒.Sublime Text 是一款不错的编辑器,简洁 ...
- order by 导出数据不一致的问题
转自 http://blog.csdn.net/wwwwei_csdn/article/details/78181197 前言 数据库分页是后台经常要使用的技术手段,有时候进行数据库查询会根据业务 ...
- Netty断线重连
Netty断线重连 最近使用Netty开发一个中转服务,需要一直保持与Server端的连接,网络中断后需要可以自动重连,查询官网资料,实现方案很简单,核心思想是在channelUnregistered ...
- libsecp256k1 与 openssl ecdsa
1. 历史 区块链节点在接收到的用户发送的交易时,首先会验证交易所涉及utxo的可用性.方法是验证用户签名的合法性,涉及的签名算法就是secp256k1,一种椭圆曲线加密算法. 长期以来,实现了该算法 ...