Django入门笔记一

web应用程序处理流程

web_processing_sequence.png
客户端
  • 向服务器端发送HTTP请求
  • 从服务器端接收HTTP响应
  • 与服务器端遵循HTTP协议
服务器端
  • 服务器程序
    • 接收&解析HTTP请求报文
    • 构造&返回HTTP响应报文
  • 框架程序(Django,Flask)
    • http请求对象(Request)
    • 具体业务逻辑(Web应用的核心)
    • http响应对象(Response)
    • 与框架程序遵循WSGI协议

Django基础一

Django的MVT
mvt.png
  • Model:负责和数据库交互,进行数据处理
  • View:接收请求,进行业务处理,返回应答
  • Template:负责封装构造要返回的html
搭建环境
  • 创建虚拟环境
mkvirtualenv django_1.11 -p python3
  • 安装Django
pip install django==1.11.11
  • 虚拟环境相关指令
mkvirtualenv  # 创建虚拟环境
rmvirtualenv  # 删除虚拟环境
workon  # 进入虚拟环境、查看所有虚拟环境
deactivate  # 退出虚拟环境
  • pip相关指令
pip install  # 安装依赖包
pip uninstall  # 卸载依赖包
pip list  # 查看已安装的依赖库
pip freeze
创建工程
  • 创建工程
django-admin startproject 工程名称
  • 工程目录说明
__init__.py:目录为python包
settings.py :项目的配置文件。
urls.py :项目URL路由的配置文件,URL地址与视图函数的映射表。
wsgi.py :Web服务器和Django交互的入口。
manage.py :是项目管理文件

urls.py中的path函数

path(route, view, kwargs=None, name=None)
route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
view: 用于执行与正则表达式匹配的 URL 请求。
kwargs: 视图使用的字典类型的参数。
name: 用来反向获取 URL。
  • 运行开发服务器
python manage.py runserver ip:端口
创建子应用
  • 创建子应用
python manage.py startapp 子应用名称

一个项目由多个应用(模块)组成,每一个应用完成一个特定的功能
在pycharm中,Tools--->Run manage.py task--->在管理器中输入startapp 子应用名称,也能创建子应用

  • 子应用目录说明
__init__.py 目录为python包
admin.py 文件跟网站的后台管理站点配置相关。
apps.py 文件用于配置当前子应用的相关信息。
migrations 目录用于存放数据库迁移历史文件。
models.py 文件用户保存数据库模型类。
tests.py 文件用于开发测试用例,编写单元测试。
views.py 定义处理函数(视图函数),接收并处理请求,与M&T交互,返回应答。
  • 注册安装子应用
    • 建立应用与项目之间的练习,对应用进行注册
    • 修改settings.py中INSTALLED_APPS列表的配置
创建视图views
  • 编写Web应用的业务逻辑
  • 视图函数的参数为HttpReqeust对象,名为request
  • 视图函数的返回值为响应对象,将要返回的字符串放到HTTPResponse对象中
添加路由
  • 在每个应用中创建自己的子路由文件,然后在主urls中添加子路由
  • urls中的路径遵循正则表达式有^和,且不能出现在总路由urls的匹配路由中
  • 主路由中的子路由添加有字符串和路径(导包)两种方式
配置文件
  • BASE_DIR,当前工程的根目录,
  • DEBUG(开发和上线),DEBUG为True时,默认工作在调试模式下,部署线上
    修改DEBUG=False
  • 本地语言与时区,初始化的工程默认语言和时区为英语和UTC标准时区
静态文件
  • 项目中的CSS、图片、js都是静态文件,有些静态文件在项目中是通用的,通常放
    在项目的根目录下
  • 配置两个参数
    STATICFILES_DIRS=[] 存放查找静态文件的目录 接收的是list
    STATIC_URL 访问静态文件的URL前缀
  • Django 仅在调试模式下(DEBUG=True)能对外提供静态文件
  • 当DEBUG=False工作在生产模式时,Django不再对外提供静态文件,需要是用
    collectstatic命令来收集静态文件并交由其他静态文件服务器来提供
路由说明
  • 路由定义位置
    工程同名目录下的urls.py文件是Django解析路由的入口,每个子应用为了保持相对
    独立,在各个子应用中定义自己的urls.py来保存该应用的路由。然后在主路由文件
    中包含各应用的子路由数据
    Django接收到请求时,从主路由文件中的urlpatterns列表中,以由上至下
    的顺序查找对应路由规则,如果发现include包含,进入被包含的urls中
    的urlpatterns列表由上至下进行查询,由上自下可能会使上面的路由屏蔽掉下面的
    路由,带来非预期结果

  • 路由命名与reverse反解析
    在使用include函数定义路由时,可以使用namespace参数定义路由的命名空间
    在定义普通路由时,可以使用name参数指明路由的名字

    使用reverse函数,可以根据路由名称,返回具体的路径
    对于未指明namespace的,reverse(路由name)
    对于指明namespace的,reverse(命名空间namespace:路由name)

Remark:
URL:统一资源定位符,互联网上的每个文件都有唯一的URL
URL格式:

schema://host[:port#]/path/.../[?query-string][#anchor]
schema:指定使用的协议(有http,https,ftp)
host:http服务器的IP或域名
port:端口号
path:访问资源的路径
query-string:发送给http服务器的数据
anchor:锚点,在页面上的定位(前端)

端口被占用解决方式:

ps aux 查看Linux的当前进程
kill -9 进程号 杀死进程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容