01_Django-介绍-项目结构-URL和视图函数
01_Django-介绍-项目结构-URL和视图函数
视频:https://www.bilibili.com/video/BV1vK4y1o7jH
博客:https://blog.csdn.net/cpen_web
一. 课程目录
Django介绍
Django项目结构
URL和视图函数
路由配置
二. Django介绍
起源
2005年发布,采用Python语言编写的开源web框架
早期的时候Django主做新闻和内容管理的
重量级的Python Web框架,Django配备了常用的大部分组件
组件
包含组件如下:
基本配置文件/路由系统
模型层(M)/模块层(T)/视图层(V)
Cookies和Session
分页及发邮件
Admin管理后台
用途
用途一:网站/微信公众号/小程序后端开发
用途二:人工智能平台融合
版本
Django官网:http://www.djangoproject.com
Django中文文档参考网站:https://yiyibooks.cn/
版本
最新版本3.0.x
当前教学版本2.2.12
安装
支持Python的版本 - 3.5,3.6,3.7,3.8
在线安装
虚拟机执行 sudo pip3 install django==2.2.12
检查是否成功 sudo pip3 freeze |grep -i 'Django'
离线安装 - 官方下载离线安装包
将安装包复制到虚拟机
解压缩 tar -xvf Django-2.2.12.tar.gz
进入目录 cd Django-2.2.12
执行安装 sudo python3 setup.py install
检查是否成功 sudo pip3 freeze |grep -i 'Django'
三. Django项目结构
创建项目
成功安装 Django 后,虚拟机终端会有 django-admin 命令
执行 django-admin startproject 项目名 即可创建出对应项目文件夹
例如 终端执行 django-admin startproject mysite1; 则创建出mysite1项目
启动服务
启动[测试开发阶段]
1.终端cd进入到项目文件夹,例如 cd mysite1
2.进入到项目文件夹后,执行 python3 manage.py runserver 启动django服务完【注:该启动方式下,Django在前台启动服务,默认监听8000端口】
3.浏览器访问 http://127.0.0.1:8000 可看到django的启动页面
注:【如果想更换端口,则可以用 python3 manage.py runserver 端口号】
关闭服务
方式1:在runserver启动终端下
执行 Ctrl + c 可关闭Django服务
方式2:在取它终端下
执行 sudo lsof -i:8000 查询出Django的进程id
执行 kill -9 对应Django进程id
启动常见问题
问题:启动时报错
Error: That port is already in use.
问题原因:端口已被使用,证明当前Django启动时,默认监听的8000端口已被其他进程占用
解决方案:参考关闭服务
结构解析
展开mysite1项目,结构如下
$ tree mysite1
mysite1
├── db.sqlite3 #注:默认django数据库存储文件
├── manage.py # *
└── mysite1 # *
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-39.pyc
│ ├── settings.cpython-39.pyc
│ ├── urls.cpython-39.pyc
│ └── wsgi.cpython-39.pyc
├── settings.py
├── urls.py
└── wsgi.py
manage.py
manage.py包含项目管理的子命令,如:
python3 manage.py runserver 启动服务
python3 manage.py startapp 创建应用
python3 manage.py migrate 数据库迁移
...
直接执行python3 manage.py 可列出所有的Django子命令
项目同名文件夹
项目同名文件夹 - mysite1/mysite1
__init__: Python包的初始化文件
wsgi.py: WEB服务网关的配置文件 - Django正式启动时,需要用到
urls.py: 项目的主路由配置 - HTTP请求进入Django时,优先调用该文件
settings.py: 项目的配置文件 - 包含项目启动时需要的配置
settings.py
settings.py包含了Django项目启动的所有配置项
配置项分为 公有配置 和 自定义配置
配置项格式例:BASE_DIR = 'xxxx'
公有配置 - Django官网提供的基础配置
公有配置
BASE_DIR
用于绑定当前项目的绝对路径(动态计算出来的),所有文件夹都可以依赖此路径
DEBUG
用于配置Django项目的启动模式,取值:
True表示开发环境中使用 开发调试模式(用于开发中)
False表示当前项目运行在 生产环境中
ALLOWED_HOSTS
设置允许访问到本项目的host头值
[]空列表, 表示只有请求头中host为 127.0.0.1, localhost 能访问本项目 - DEBUG = True时生效
[‘*’], 表示任何请求头的host都能访问到当前项目
[‘192.168.1.3’, ‘127.0.0.1’] 表示只有当前两个host头的值能访问当前项目
示例:如果要在局域网其它主机也能访问此主机的Django服务,启动方式如下:
python3 manage.py runserver 0.0.0.0:5000
指定网络设备如果内网环境下其它主机想正常访问该站点,需要加ALLOWED_HOSTS=[‘内网ip’]
INSTALLED_APPS - 指定当前项目中安装的应用列表
MIDDLEWARE - 用于注册中间件
TEMPLATES - 用于指定模板的配置信息
DATABASES - 用于指定数据库的配置信息
LANGUAGE_CODE - 用于指定语言配置
英语: “en-us”
中文: “zh-Hans”
TIME_ZONE - 用于指定当前服务器端时区
世界标准时间: “UTC”
中国时区: “Asia/Shanghai”
ROOT_URLCONF - 用于配置主url配置 ‘mysite1.urls’
ROOT_URLCONF = ‘mysite1.urls’
#项目绝对路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DEBUG = True
# 启动模式
# True - 调试模式
# 1,检测代码改动后,立刻重启服务
# 2,报错页面
# False - 正式启动模式 / 上线模式 #请求头Host头
ALLOWED_HOSTS = ['127.0.0.1']
#ALLOWED_HOSTS = ['www.tedu1.com']
自定义配置
settings.py中也可以添加 开发人员 自定义的配置
配置建议:名字尽量个性化 - 以防覆盖掉公有配置
例如:ALIPAY_KEY = ‘xxxxxx’
settings.py中的所有配置项,都可以按需的在代码中引入
引入方式:from django.conf import settings
四. URL和视图函数
URL - 结构
定义 - 即统一资源定位符 Uniform Resource Locator
作用 - 用来表示互联网上某个资源的地址
URL的一般语法格式为(注:[] 代表其中的内容可省略):
protocol://hostname[:port]/path[?query][#fragment]
http://tts.tmooc.cn/video/showVideo?menuld=657421&version=AID999#subject
protocol(协议)
http://tts.tmooc.cn
http 通过HTTP访问该资源。格式 http://
https 通过安全的HTTPS访问该资源。格式 https://
file资源是本地计算机上的文件。格式 file:///
hostname(主机名)
http:// tts.tmooc.cn
是指存放资源的服务器的域名系统(DNS)主机名、域名 或 IP地址
port(端口号)
整数,可选,省略时使用方案的默认端口
各种传输协议都有默认的端口号,如http的默认端口为80
path(路由地址)
http://tts.tmooc.cn/ video/showVideo
由零或多个 “/” 符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。路由地址决定了服务器端如何处理这个请求
query(查询)
video/showVideo?menuld=657421&version=AID999
可选,用于给动态网页传递参数,可有多个参数,用 “&” 符号隔开,每个参数的名和值用 “=” 符号隔开
fragment(信息片段)
Version=AID999#subject
https://docs.djangoproject.com/en/2.2/ #the-template-layer
字符串,用于指定网络资源中的片段。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释
处理URL请求
浏览器 地址栏 -> http://127.0.0.1:8000/page/2003/
1.Django从配置文件中 根据 ROOT_URLCONF 找到 主路由文件;默认情况下,该文件在 项目同名目录下的urls;例如 mysite1/mysite1/urls.py
2.Django加载 主路由文件中的 urlpatterns 变量【包含很多路由的数组】
3.依次匹配 urlpatterns 中的 URL,匹配到第一个合适的中断后续匹配
4.匹配成功 - 调用对应的视图函数处理请求,返回响应
5.匹配失败 - 返回404响应
主路由 - urls.py
主路由 - urls.py 样例
from django.urls import path
form . import views urlpatterns = [
path('admin/', admin.site.urls),
path('page/2003/', views.page_2003),
path('page/2004/', views.page_2004),
]
视图函数
视图函数是用于接收一个浏览器请求(HttpRequest对象)并通过HttpRequest对象返回响应的函数。此函数可以接收浏览器请求并根据业务逻辑返回相应的响应内容给浏览器
语法
def xxx_view(request[, 其它参数...]):
return HttpResponse对象
样例
# file: <项目同名文件夹下>/views.py
from django.http import HttpResponse def page1_view(request):
html = "<h1>这是第1个页面</h1>"
return HttpResponse(html)
示例
http://127.0.0.1:8000/page/2003/ <项目同名文件夹下>/urls.py
from . import views urlpatterns = [
path('admin/', admin.site.urls),
#http://127.0.0.1:8000/page/2003/
path('page/2003/', views.page_2003_view)
] <项目同名文件夹下>/views.py
from django.http import HttpResponse def page_2003_view(request):
html = "<h1>这是第1个页面</h1>"
return HttpResponse(html)
01_Django-介绍-项目结构-URL和视图函数的更多相关文章
- Python学习笔记整理总结【Django】【MVC/MTV/路由分配系统(URL)/视图函数 (views)/表单交互】
一.Web框架概述 Web框架本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python # -*- coding:utf-8 ...
- flask第七篇——URL与视图函数的映射
有兴趣的朋友可以添加微信公众号:自动化测试实战 今天开始就要进入正题了.大家都准备好了吧~ 代码提示 先和大家说个小知识点:有同学后台说输入flask代码pycharm不提示,现在告诉你一个解决方法: ...
- django重点url,视图函数,模板语言
django重点url,视图函数,模板语言url 1.django重点url无命名分组:re_path() 2.url第一个参:url未命别名分组就不需要views中参数一定,若命别名(?P<y ...
- URL与视图函数的映射
今天跟大家讲的是URL与视图函数的映射 URL与视图函数的映射 url与视图函数的映射是通过@app.route()装饰器实现的. 1.只有一个斜杠代表的是根目录——首页. # coding: utf ...
- 2.-url和视图函数
一.URL-结构 1.定义:统一资源定位符 Uniform Resource Locator 2.作用:用来表示互联网上某个资源地址 3.URL的一般语法格式为(注:[]代码其中的内容可以省略): 格 ...
- 关于:url、视图函数、模板3者之间参数传递的理解
url获取参数的途径有2个: 1.url中的变量,设置在URL地址中. 2.url中添加字典,设置在URL地址外. urlpatterns = [ path('<year>/<int ...
- django url配置-反向解析-视图函数-HttpRequest对象-HttpResponse对象-cookies-session-redis缓存session
""" --视图概述:-- 作用:视图接受WEB请求,并响应WEB请求 本质:视图就是一个python中的函数 响应: 1.网页: 一.重定向 二.错误视图 400,50 ...
- Django - - - -视图层之视图函数(views)
视图层之视图函数(views) 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档 ...
- 【Python】Flask系列-URL和视图笔记
1.学习目标 熟悉Flask相关知识. 熟悉web开发流程. 能独立开发Flask项目. 2.环境配置 Python虚拟环境安装 因为python的框架更新迭代太快了,有时候需要在电脑上存在一个框架的 ...
随机推荐
- 表达式的动态解析和计算,Flee用起来真香
前言 在很多项目中经常会出现需要动态解析表达式和计算的场景,比如一些自动审核规则,或者是一些变量的值通过维护的公式在运行过程中动态算出:由于场景需求,都需要比较灵活的配置对应的表达式,然后希望在需要的 ...
- TypeScript(5)类、继承、多态
前言 对于传统的 JavaScript 程序我们会使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员使用这些语法就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来 ...
- 【故障公告】取代 memcached 的 redis 出现问题造成网站故障
6月19日开始,我们将博客站点的缓存服务器从 memcached 换成了 redis,稳定运行了3天,今天上午访问高峰突然出现问题,在 11:00-12:30 期间影响了网站的正常访问,由此给您带来麻 ...
- 自己封装的tools.js文件
/* * 生成指定范围的随机整数 * @param lower 下限 * @param upper 上限 * @return 返回指定范围的随机整数,上/下限值均可取 */ function rand ...
- # vue3 ref 和 reactive 函数
vue3 ref 和 reactive 函数 前言 上一篇博文介绍 setup 函数的时候,最后出现一个问题,就是在 setup 函数中,编写一个事件,直接去修改定义的变量,发现页面上没有更新成功,并 ...
- 腾讯云数据库公有云市场稳居TOP 2!
7月4日,国际权威机构IDC发布的<2021年下半年中国关系型数据库软件市场跟踪报告>显示,腾讯云数据库在关系型数据库软件市场(公有云模式)中,位列第二. IDC报告显示,2021下半年中 ...
- spring-security 配置简介
1.Spring Security 简介 Spring Security 是一个能够基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在 Spring 应用 ...
- 161_可视化_Power BI 复刻 GitHub 贡献热力图
161_可视化_Power BI 复刻 GitHub 贡献热力图 一.背景 在 GitHub 上,有用户的贡献度的热力图如下: Power BI 公共 web 效果:https://demo.jiao ...
- 网易云UI模仿-->侧边栏
侧边栏 效果图 界面分解 可以看到从上到下的流式布局.需要一个Column来容纳,并且在往上滑动的过程中顶部的个人信息是不会动的.所以接下来需要将剩余部分占满使用Flexibel组件. 实现 个人信息 ...
- gitlab+jenkins学习笔记
一.部署gitlab gitlab部署我采用的是docker的方式,这种方式的优势是方便:之前部署过非docker的gitlab,需要配置安装许多东西,太麻烦,还是docker部署方便,从官网pull ...


