Django-虚拟环境-伪静态-request对象-FBV与CBV-文件上传

一、虚拟环境安装
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
7.PyCharm的开发配置
	添加:创建项目 -> Project Interpreter -> Existing interpreter -> Virtualenv Environment | System Interpreter -> 目标路径下的python.exe
	删除:Setting -> Project -> Project Interpreter -> Show All
二、路由配置主页与404页面
路由层:
from django.urls import path, re_path
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'))
# 404
def error(request):
    return render(request, 'error.html')
三、2.x 路由分发
1.无名称空间
主路由:
path('app01/', include('app01.urls'))
子路由:
path('test/', views.test)

2.有名称空间
主路由:
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>
五、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('上传成功')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值