Django项目搭建1

14 篇文章 1 订阅
7 篇文章 0 订阅

学习目标

知道MVT设计模式中MVT分别代表的含义
能够使用命令创建Django工程和子应用
知道如何在Django中定义视图及路由
理解Django路由的匹配流程
能够区分命名参数和未命名参数的区别
知道如何使用request对象获取查询字符串参数
知道如何使用request对象获取请求体数据

Django MVT

对项目进行分层的一种软件设计模式;

核心思想:分层,解耦,分离了 数据处理 和 界面显示 的代码,使得一方代码修改了不会影响到另外一方,提高程序的可扩展性和可维护性。

  • M全拼为 Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
  • V全拼为 View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
  • T全拼为 Template,与MVC中的V功能相同,负责封装构造要返回的html。

项目搭建

  1. 项目和应用的创建 (两种方式)

    • pycharm
    • 命令行
    django-admin startproject 项目名
    python manage.py startapp 应用名
    
  2. 运行服务器

    python manage.py runserver  				  # 使用默认ip和端口
    python manage.py runserver  127.0.0.1:8000    # 手动指定ip和端口
    
  3. 视图初步使用

    • 定义视图(函数)
    def index(request):
        return HttpResponse("hello django")
    
    • 在与全局的 url.py 中配置路由
      urlpatterns = [
          ...    
          # 配置路由和视图: http://127.0.0.1:8000/users/index
          # 参数1: 匹配url的正则表达式
          # 参数2: 匹配成功后由Django框架调用的视图函数
          url(r'^users/index$', views.index),
      ]
    
  4. 模板初步使用

    • 创建模板文件

    • 指定模板文件所在的目录(pycharm创建的项目默认已经指定)

      # settings.py
      TEMPLATES = [
          {
              'BACKEND': 'django.template.backends.django.DjangoTemplates',
              
              # 指定模板文件所在的目录
              'DIRS': [os.path.join(BASE_DIR, 'templates')],
               ...
          },
      ]
      
    • 在视图中通过 render 函数使用模板

      def index(request):
          context = {'name': 'python'}
          return render(request, 'users/index.html', context)
      

配置

常用配置项
  • BASE_DIR 默认为项目的根目录 【理解,后面项目会用到】

  • DEBUG 是否开启调试模式

    • 开发阶段设置为True, 会输出项目调试信息;(开发模式,调试模式)
    • 项目上线后设置为False,不会输出项目调试信息;(生产模式,上线模式)
  • 语言和时区配置

    LANGUAGE_CODE = 'zh-hans'		# 指定为中文
    TIME_ZONE = 'Asia/Shanghai'		# 指定时区
    
  • INSTALLED_APPS:什么情况下需要注册应用?【理解,如果提示TemplateDoesNotExist知道是什么原因】

    • 要根据应用中的模型类生成表
    • 要用到应用中的模板
    class UsersConfig(AppConfig):
        name = 'users'
    
    INSTALLED_APPS = [
         ...    
        'users.apps.UsersConfig',		# 方式一
        # 'users'   					# 方式二  
    ]
    
静态文件使用配置

静态文件: css, js, images

配置:

  • STATIC_URL:访问静态文件时使用的url前缀, (使用默认值即可,不需要配置)
  • STATICFILES_DIRS:配置静态文件保存在哪个目录下(配置手动配置)
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static_files')]
  • index.html模板中使用 图片 或js静态文件

    1537065618150

    注意:django测试服务器仅在调试模式下支持静态文件的使用

URL配置

针对 http://127.0.0.1:8000/user/index 进行路由配置,习惯分开两部分来配置

项目的 urls.py:

  urlpatterns = [
      ...
      url(r'^users/', include('users.urls')),
  ]

应用的 urls.py

  urlpatterns = [
  	  ...
      url(r'^index$', views.index), 
  ]
捕获URL中的参数【重要】

http://127.0.0.1:8000/news/1/2

  • 未命名参数:按位置传递

    url(r'^news/(\d+)/(\d+)$', users.views.news),
     
    def news(request, a, b):
    	return HttpResponse("显示新闻:%s %s" % (a, b))
    
  • 命名参数:按名字传递

    url(r'^news/(?P<category>\d+)/(?P<page>\d+)$', users.views.news),
    
    def news(request, category, page):
        return HttpResponse("显示新闻:%s %s" % (category, page))
    

客户端传参的几种方式

传参方式示例如获取参数备注
url路径(path)/news/1/2正则
查询字符串/news2?category=1&page=2request.GETQueryDict
请求体:表单类型的数据category=1&page=2request.POSTQueryDict
请求体:非表单类型的数据(json, xml){“category”:1,“page”:2}request.bodybytes
请求头category=1 page=2request.META字典

QueryDict对象

类似字典,一键可以有多个值

get方法: 获取值
getlist方法:获取多个值,返回列表
request.GET,request.POST 都为QueryDict类型的对象

request对象

request属性说明备注
GET获取查询字符串参数 (与请求方式无关)QueryDict
POST获取请求体中的表单类型的数据(与请求方式有关,仅限post请求)QueryDict
body获取请求体非表单类型的数据,比如:jsonbytes
META获取请求头中的数据
(获取自定义属性时,需要 加前缀HTTP_, 转大写)
字典
user当前访问的登录用户对象

问题1:当请求方式为 post ,是否可以通过 reqeust.GET 获取查询查询字符串参数?

可以

问题2:当请求方式为 put , 是否可以通过 request.POST 获取到请求体中的表单数据?

不可以,需要用request.body获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值