前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django基础到高手知识笔记总结 共4大模块50页md文档 第2章:django视图和模板的使用

django基础到高手知识笔记总结 共4大模块50页md文档 第2章:django视图和模板的使用

原创
作者头像
程序员一诺
发布2023-10-29 18:38:28
1590
发布2023-10-29 18:38:28
举报
文章被收录于专栏:知识集合知识集合
当你考虑开发现代化、高效且可扩展的网站和Web应用时,Django是一个强大的选择。Django是一个流行的开源Python Web框架,它提供了一个坚实的基础,帮助开发者快速构建功能丰富且高度定制的Web应用

完整版笔记直接地址: 请移步这里


共 10 章,31 子模块,总计 18647 字


工程搭建

学习目标

  • 掌握虚拟环境使用
  • 掌握Django项目和应用的创建
  • 掌握Django项目的运行
  • 掌握Django视图和模板的初步使用

视图模板初步使用

Django中的视图

  • 同Flask框架一样,Django也使用 视 图 来编写Web应用的业务逻辑。
  • Django的视图也就是一个函数,可称为 视 图函数
  • 视 图 定义在应用的 views.py 文件中的
  • 视 图 需要绑定一个URL地址(路由),才能被django框架找到并调用执行

一、视图初步使用

需求: 编写视图并配置URL(路由),实现一个显示界面

  1. 需求: 当在浏览器中访问URL地址 ht://127.0.0.1:8000/users/index 时,显示 hello django 信息
  2. 实现:
    1. 需要编写一个视图函数
      1. 针对该视图配置访问路由

1. 创建视图

打开刚创建的users模块,在 views.py 中编写视图代码。

from django.http import HttpResponse

代码语言:javascript
复制
def index(request):
    """访问首页的视图"""
    return HttpResponse("hello django")
image
image

关于视图的说明:

  • 关于视图【理解】
    • 视 图不是由开发者主动调用的,而是由 Django 框架调用
    • 当Django接收到请求时,会进行URL正则匹配,调用对应的视图
    • 调用视图时,Django会把请求信息封装为一个 HttpRequest 对象,并作为视图的第一个参数传入
  • 关于视图的参数
    • 视 图的第一个参数必须定义,名字可自定义,但习惯命名为 request,类型为HttpRequest
    • 缺少了该参数,Django在调用视图时,将无法传入HttpRequest对象
  • 关于视图的返回值
    • 视图必须返回一个 HttpResponse 对象(或其子类对象),不能像Flask一样直接返回字符串
    • HttpRequest请求对象由Django创建,HttpResponse响应对象由开发人员创建

2. 配置URL(路由)

  • 在项目下的 urls.py 文件中进行url路由配置如下:
代码语言:javascript
复制
      # 注意:urlpatterns是一个列表
代码语言:javascript
复制
  urlpatterns = [
      ...    
代码语言:javascript
复制
      # 配置路由和视图: ht://127.0.0.1:8000/users/index
代码语言:javascript
复制
      # 参数1: 匹配url的正则表达式
代码语言:javascript
复制
      # 参数2: 匹配成功后由Django框架调用的视图函数
代码语言:javascript
复制
      url(r'^users/index$', views.index),
  ]

注意:此处只是为简单作的初步配置,后续会对URL配置进一步讲解

3. 在浏览器中测试

在浏览器中输入网址 ht://127.0.0.1:8000/users/index,确认是否执行了视图的逻辑,返回 hello django 信息

在浏览器测试
在浏览器测试

一、模板初步使用

  1. 在项目的 templates 目录下创建一个模板文件
模板初步
模板初步
  1. 在视图函数中,使用render()方法渲染模板,得到HttpResponse对象并返回 def index(request):
代码语言:javascript
复制
     # render返回的是HttpResponse对象
代码语言:javascript
复制
     return render(request, 'index.html')

二、额外项目配置

【 注意】 针对命令行创建的项目,需要额外手动创建模板目录,并进行配置;如果Pycharm创建的项目则无需作额外操作

  1. 在项目根目录下创建 templates 模板目录,后续开发中模板文件会放在此目录下
  2. setting.py 项目配置文件中,作如下配置:
django-004
django-004

项目配置文件

学习目标

  • 掌握Django配置文件的常用配置

项目常用配置

在项目的 setting.py 配置文件中,进行项目相关配置的修改。

1. BASE_DIR

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))

当 前项目的根目录,Django会依此来定位工程内的相关文件,我们也可以使用该参数来构造文件路径。

2. DEBUG

  • 含义:是否为调试模式(开发模式),默认为 True
  • 作用:当 DEBUGTrue 时,如果Django程序运行出现异常时,会在浏览器显示详细的出错调试信息(如下图),而非调试模式下,不会显示出错调试信息
错误信息
错误信息

【重要】项目运行出错了,需要查看是哪里一行代码造成出错,再进行分析解决

错误信息
错误信息
  • 注 意:项目上线应该设置为 False 关闭调试模式,并且要同时设置 ALLOWED_HOSTS 参数
代码语言:javascript
复制
      # 关闭调试模式
代码语言:javascript
复制
  DEBUG = True
代码语言:javascript
复制
  # 设置允许通过哪些主机访问, * 表示匹配所有(ip)
代码语言:javascript
复制
  ALLOWED_HOSTS = ['*']

3. 本地语言与时区

项目本地化配置

  • Django支持本地化处理,即显示语言与时区
  • 新创建的Django项目,默认使用的语言为 英语,时区为 UTC标准时区 LANGUAGE_CODE = 'en-us' # 语言 TIME_ZONE = 'UTC' # 时区
  • 配置修改: 将语言和时区修改为中国大陆信息 LANGUAGE_CODE = 'zh-hans' # 语言设置为 中文 TIME_ZONE = 'Asia/Shanghai' # 时区设置为 亚洲/上海,注意没有北京

测试

  1. django自带了管理后台模块,可以通过 ht://127.0.0.1:8000/admin/login 访问,默认显示为英文
  2. 修改上述参数后,再次访问,确认是否会显示为中文
本地化
本地化

4. App应用配置

  1. 在每个应用目录中都包含了 apps.py 文件,用于保存该应用的相关信息
  2. 在创建应用时,Django会向 apps.py 文件中写入一个该应用的配置类,如下 from django.apps import AppConfig class UsersConfig(AppConfig):
代码语言:javascript
复制
     # 表示这个配置类是加载到哪个应用的,
代码语言:javascript
复制
     # 每个配置类必须包含此属性,默认自动生成
代码语言:javascript
复制
     name = 'users'
  1. 应用配置: 需要在项目配置文件 settings.py 中的 INSTALLED_APPS 列表中,注册创建出来的应用,示例:
django-004
django-004

配 置说明

代码语言:javascript
复制
* **用 pycharm创建的项目,默认已经是注册了应用的,不需要作额外配置**,针对新创建的应用(或命令行创建的应用)需要作此配置
* 作用:注册应用后,后续开发中,针对该应用中定义的模型类,才会生成对应的数据库表;

静态文件及配置

  • 项 目中的 CSS、图片、js都是 静态文件
  • 静态文件可以放到一个单独的目录中,以方便管理
  • 静态文件相关配置
    • STATICFILES_DIRS 静态文件保存在哪个目录下(此参数默认django没有配置,需要开发者自己配置)
    • STATIC_URL 访问静态文件的URL前缀,通常采用默认值 /static/

配置示例

  1. 在项目根目录下创建 static_files 目录,并添加子目录和文件 imgs/avatar01.png
  2. 在 项目 settings.py 文件中进行配置
代码语言:javascript
复制
     # 访问静态文件用到的url前缀
代码语言:javascript
复制
 STATIC_URL = '/static/'
代码语言:javascript
复制
 # 告知Django静态文件保存在哪个目录下
代码语言:javascript
复制
 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static_files')]
  1. index.html模板中应用 使用静态文件:

注意

  • Django 仅在调试模式下(DEBUG=True)能对外提供静态文件
  • DEBUG=False 工作在生产模式时,Django不再对外提供静态文件

路由配置

学习目标

  • 掌握Django中URL配置
  • 掌握Django URL的匹配流程
  • 掌握URL路径中请求参数的

未完待续 下一期下一章

完整笔记请看文章开头

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 完整版笔记直接地址: 请移步这里
    • 共 10 章,31 子模块,总计 18647 字
      • 学习目标
  • 工程搭建
  • 视图模板初步使用
    • 一、视图初步使用
      • 1. 创建视图
      • 2. 配置URL(路由)
      • 3. 在浏览器中测试
    • 一、模板初步使用
      • 二、额外项目配置
        • 学习目标
    • 项目配置文件
    • 项目常用配置
      • 1. BASE_DIR
        • 2. DEBUG
          • 3. 本地语言与时区
            • 4. App应用配置
            • 静态文件及配置
              • 配置示例
                • 注意
                  • 学习目标
              • 路由配置
              • 未完待续 下一期下一章
              • 完整笔记请看文章开头
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com