| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Django(第一周) -> 正文阅读 |
|
[Python知识库]Django(第一周) |
一、基本介绍Django是一种Web框架,用于搭建Web应用程序,免去不同Web应用相同代码部分的重复编写,只需关心Web应用核心的业务逻辑实现 Web应用程序的本质:接收并解析HTTP请求,获取具体的请求信息,处理本次HTTP请求,即完成本次请求的业务逻辑处理,构造并返回处理结果——HTTP响应 Web应用处理流程: ?Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站!采用了MVC的框架模式。 Django框架的核心: 1.一个面向对象 的映射器,用作数据模型(以 Python 类的形式定义)和关系型数据库间的介质; 2.一个基于正则表达式的 URL 分发器; 3.一个视图系统,用于处理请求; 4.一个模板系统。 MVC模式: ? 优点:分层,结构清晰,耦合性低,大型项目代码的复用性得到极大的提高,开发人员分工明确,提高了开发的效率,维护方便,降低了维护成本。 缺点:简单的小型项目,使用MVC设计反而会降低开发效率,层和层虽然相互分离,但是之间关联性太强,没有做到独立的重用。 ?二、创建虚拟环境项目不同时,需要用到的python的包也不同,为了方便管理项目和所用的包,我们可以为项目创建一个虚拟环境 创建虚拟环境需要用到一个第三方库:virtualenvwrapper
虚拟环境的管理: 在自己想存放虚拟环境的路径下创建一个文件夹(我创建在了d盘下,文件夹名字叫做ENVS) 打开系统环境变量,在系统环境变量中添加变量名为:WORKON_HOME(必须是这个),变量值为:D:\ENVS(改成自己的路径) Pycharm中使用虚拟环境: File -> Settings -> Project Interpreter -> 点击齿轮 -> Add -> 点击existing environment -> 选择虚拟环境的路径D:\ENVS\django\Scripts\python.exe 因为我创建的虚拟环境叫做django,所以路径是这样的 注意:路径一定要选择到自己创建的虚拟环境名称文件夹下面的scripts文件夹中的python.exe ?三、Django项目的创建Django项目创建命令:django-admin startproject xxx 创建好项目后养成习惯,右键项目名的文件夹,找到mark directory as,选择source root,即把项目文件夹设置成根目录,导包时方便我们的编辑器去查找 子应用创建命令:python manage.py startapp xxx? ?(创建前需要在settings.py中导入os模块,即加入import os而必须进入项目文件夹目录) 注册子应用:在settings中的INSTALLED_APPS中添加:子应用名.apps.(apps.py文件中)类名 养成习惯没创建一个子应用就要对其进行注册 启动django服务:python manage.py runserver Settings文件中的一些参数: BASE_DIR:项目所在目录,如果我们print(BASE_DIR),在我们启动django服务时会输出两次,这是因为会产生两个线程加载settings文件,一个用于服务开发人员,另一个用于监控文件是否发生改变 DEBUG:默认等于True,即处于开发模式;False生产模式 ALLOWED_HOSTS = []:控制哪些域名和IP可以对我们的网站进行访问,当DEBUG为False时,必须添加允许访问的域名和IP,*表示允许所有域名和IP进行访问 INSTALLED_APPS:用于注册自带的子应用 MIDDLEWARE:中间件,修改我们的请求和响应后返回 ROOT_URLCONF:根路由目录 TEMPLATES:模板;列表中的DIRS表示模板的查找路径,APP_DIRS表示是否允许从子应用中查找 LANGUAGE_CODE:前端界面的语言;en-us英文,zh-hans中文 TIME_ZONE:时区;Asia/Shanghai北京时间 静态文件: 静态文件指不是由服务器生成的文件,例如:脚本,css文件,图像等,但是必须在请求时发送给浏览器,只有文本或图片,且不会通过后台的控制来更改的元素 静态文件分为app下的静态文件和整个项目的静态文件 项目静态文件的配置:需要在项目文件夹下创建一个叫static的文件夹,然后在settings中创建一个 STATICFILES_DIRS 的空列表,里面放static文件夹的路径,可以直接输入路径,也可以使用拼接
完成后启动django服务,在网址后面加上/static/文件名.格式 即可访问到静态文件 子应用静态文件的配置:在子应用文件夹下创建一个叫static的文件夹,再在static文件夹下创建一个和我们子应用名相同的文件夹。访问子应用静态文件的方式和访问项目静态文件的方式一样,通过路径访问 DEBUG = False生产模式下加载项目静态文件:先将settings.py文件中STATICFILES_DIRS所有内容注释掉,添加STATIC_ROOT = 'static'(或者STATIC_ROOT = os.path.join(BASE_DIR,'static'),然后在urls.py中导包
在?urlpatterns 中添加
?DEBUG = False生产模式下加载子应用静态文件:命名:python manage.py collectstatic 将子应用中所有静态文件聚合管理,否则生产模式下无法加载静态文件 路由:? 函数视图:在子应用中的view.py中定义,第一个参数传入的必须是一个HttpRequest对象
配置路由的方法: 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') 在urls.py中加入:
在urlpatterns中分配路由:
?也可以通过re_path分配路由(^表示以...开头,$表示以...结尾)
DEBUG模式详解: DEBUG=True时处于开发模式,当我们在浏览器输入路径错误,在前端会展示出后台代码错误信息以及路由信息 DEBUG=False时处于生产模式,当我们在浏览器输入路径错误,只会报Not Found错误 子路由的分发及参数传递
当我们访问 index/ 时,会跳转到index1页面,因为路由是从上往下匹配,如果匹配成功,就不会继续往下匹配 当我们有成百上千个路由时,看起来会很麻烦,这时候我们就要引入子路由 首先在子应用文件夹中创建一个 urls.py 的文件,将路由中导入的包和urlpatterns复制到新建的urls.py文件中 我们再在view.py中定义一个视图函数
再在 app/urls.py 中分配路由
启动django服务,输入相应路径后并不能成功访问,这是因为我们需要在根路由中给子路由分发路由,在 项目/urls.py 中写:
include()中必须是 应用名.urls 当我们在电影网站看电影时,点击了电影的分类,浏览器就会发送新的请求,url大概就变成了这个样子?https://www.iqiyi.com/dianying/爱情/ 或者?https://www.iqiyi.com/dianying/喜剧/ ,我们点击的不同,https://www.iqiyi.com/dianying/后面的类别就会不同,跳转后的网页也会不同,那么后端是如何实现接收url中携带的电影类别文字并对不同类别做出不同反应的内? 项目.urls:
view.py
效果: ? 命名:在urls.py中 路由的分发中加上name 命名 进行逆向解析时,需要命名的路由与视图相对应
逆向解析:在view.py中,可以对对应的路由进行逆向解析 逆向解析就是可以获得该名字的路由的路径
注意:需要加上:from django.urls import reverse 命名空间:在 项目urls.py中 子路由的分发中加上namespace
注意:加上namespace后,第一个参数要变成元组,第一个原素是 子应用.urls,第二个元素是 子应用名 在 子应用urls.py中?路由的分发中加上name
在 view.py中 逆向解析要变成 'namespace:name'
逆向解析的作用:提取出网址进行替换,只要对应的url的name不发生改变,就不用去修改代码中url的地址 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 1:16:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |