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

一、虚拟环境

‘‘‘
解决版本共存

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

二、路由配置主页与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.有名称空间 有名称空间,与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=123
1. method: 请求方式
2. GET: 存放get的请求数据   结果:<QueryDict: {‘abc‘: [‘123‘]}>
3. POST: 存放post的请求数据(本质是从bdoy中取出来)
4. body: post提交的数据(不能直接查看)
5. path: 请求的路径,不带参数   结果:/index/
6. request.get_full_path(): 请求路径,带参数   结果:/index/?abc=123
7. 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 HttpResponse
from django.views import View
class 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中拿
‘‘‘

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

时间: 2024-11-09 22:32:12

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

SpringMVC常用配置(二),最简洁的配置实现文件上传

Spring.SpringMVC持续介绍中,基础配置前面已经介绍了很多,如果小伙伴们还不熟悉可以参考这几篇文章: 1.Spring基础配置 2.Spring常用配置 3.Spring常用配置(二) 4.SpringMVC基础配置(通过注解配置,非xml配置) 5.SpringMVC常用配置 OK ,那么这里我想说另外一个话题,那就是文件上传,我之前在做Android开发的时候,文件上传我们一般会有两种策略,一种是通过IO流上传,还有一种是通过表单上传,其实这两种在客户端实现起来都是很简单的,在服

{Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 xxx 八 xxx 一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请

SpringMVC 文件上传配置,多文件上传,使用的MultipartFile

一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> <beans:bean id="multipartResolver" class="org.springframework.web.multipart.com

SpringMVC 理论与实用技术(二)文件上传

文件上传相信大家都做过,几乎所有的项目都有上传文件的功能,尤其是BS架构的项目中常常被列为常规功能来开发,无论是在开发.NET 项目还是java项目我们会用到很多的框架,这个功能也被集成到了框架之中,因为他太常用了,框架就是为我们提供了一个开发项目的半成品结构,可以大大提高开发效率节省开发成本.缩短开发周期. 长话短说本文主要介绍一个怎么利用springmvc实现单个以及多个文件上传,附加说说上传文件的原理. 从具体的某个实例开始,先形似再神思 第一种方式设计思路:三个注意地方 1.表单页面 2

第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示

第三百八十七节,Django+Xadmin打造上线标准的在线教育平台-网站上传资源的配置与显示 首先了解一下static静态文件与上传资源的区别,static静态文件里面一般防止的我们网站样式的文件,包括ccs,js,网站样式图片 上传资源是用户操作上传的图片等资源 上传资源的配置 1,首先在项目里创建一个名称叫media的文件夹专门保存用户上传 2,settings.py文件配置上传资源的路径 # 上传资源路径,如果图片,上传文件等 MEDIA_URL = '/media/' # 设置上传资源

使用springMVC实现文件上传和下载之环境配置与上传

最近的项目中用到了文件的上传和下载功能,任务分配给了其他的同时完成.如今项目结束告一段落,我觉着这个功能比较重要,因此特意把它提取出来自己进行了尝试. 一. 基础配置: maven导包及配置pom.xml,导包时除开springmvc的基础依赖外,需要导入文件上传下载时用到的commons-io.jsr和commons-fileupload.jar: [html] view plain copy <project xmlns="http://maven.apache.org/POM/4.0

6.28笔记-servlet3.0注解配置、文件上传、过滤器、监听器

一.servlet3.0注解配置 使用javaEE6.0 支持servlet3.0 value的值就是访问路径 urlPatterns的值也是访问路径 @WebServlet(name="DemoServlet3",value="/demoServlet3") public class DemoServlet3 extends HttpServlet { ... } 二.文件上传 表单 method 必须是post enctype="multipart/f

iOS-网络编程(二)文件上传和断点离线下载

一. iOS中发送HTTP请求的方案 在iOS中,我们常用发送HTTP请求的方案有苹果原生(自带)NSURLConnection:用法简单,最古老最经典最直接的一种方案 (iOS 9.0弃用)NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术第三方框架AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多 二. NSURLConnection (已弃用) 虽然NSURLConnection已经被弃用,但是我们还是要了解NSU

[转]ExtJs入门之filefield:文件上传的配置+结合Ajax完美实现文件上传的asp.net示例

原文地址:http://www.stepday.com/topic/?459 作文一个ExtJs的入门汉子,学习起来的确是比较费劲的事情,不过如今在这样一个网络资源如此丰富的时代,依然不是那么难了的.基本上都是Copy过来加以部分改造即可实现自己想要的功能,加之如今的第三方开发者也大发慈悲地写出了API的帮助文档以及示例文档.关于ExtJs内的文件上传,将从以下几个方面进行展开讲解: 一.ExtJs文件上传版面的布局以及配置 因为ExtJs的文件上传组件filefield是基于form表单提交数