💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
目录 文件 * Linux * Mysql * Python * Django * 01 Web应用 * Django3.2 教程 * django 快速搭建blog * imooc-Django全栈项目开发实战 * redis * Windows * hm软件测试 * 软件测试面试 * 接口测试 * 性能测试 * jmeter * PyCharm * 快捷工具 * Apache * HTTP / HTTPS协议 * imooc * Python工程师2020升级版 * 阶段四:Django全栈项目开发实战 * Selenium3+python3 * 书籍 新建章节 最后由zjut\_cheng在1 年前编辑 \[TOC\]  \* 初始Django框架  ``` Django的安装及项目的搭建 Django项目开发的基本流程 Django中从请求到响应的流程 视图、类视图、快捷视图函数、内置视图的重写 ```  \* Django中的模板  ``` 模板引擎的选择和配置 模板语法(变量、标签) 模板的继承与包含 过滤器、自定义过滤器 ```  \* Django介绍  ``` 开源免费的 Python高级Web框架,内置电池, 用于快速开发可靠、安全、可扩展的web应用 ```  \* 使用 Django框架的开发步骤  ``` 步骤一:选择合适的版本 步骤二:安装及配置 步骤三:生成项目结构 步骤四:内容开发 步骤五:迭代、上线、维护 ```   \* 版本兼容情况 !\[\](images/F6B746C6\-1F0D\-4435\-BD0E\-139E69595AB5.jpg)  当前选择版本:Django3.0   ## \*\*Django的安装\*\*  \* 方式一:pip安装【推荐】 `>>> pip3 install django` 或者指定安装源 `>>> pip3 install django -i https://pypi.tuna.tsinghua.edu.cn/simple`  \* 方式二:源码安装 `python setup.py install`   \* 检测是否安装成功 ``` \>>>import django \>>>django. version '3.0.5' ```   ## \*\*Django项目的创建\*\*  \* 方式一:使用命令行生成模板 `>>> django-admin\[.py\] startproject my\_project`  \* 方式二:使用pyCharm创建项目  !\[\](images/screenshot\_1621751638267.png)   ## \*\*启动开发服务器\*\*  \*\*启动服务器\*\* `>>> python3 manage.py runserver`   ## \*\*runserver常用参数\*\* \* 指定端口 ``` \>>> python manage.py runserver 9527 ``` 生成目录如下: !\[\](images/screenshot\_1621776164351.png)  \* 指定IP及端口 ``` \>>> python manage.py runserver 0.0.0.0:9527 ``` 提示:需要在settings.py 配置 ALLOWED\_HOSTS   \*\*创建模块\*\* \* 创建hello模块 `python manage.py startapp hello`   \*\*完成第一个页面\*\* \* 第一步: 在ⅵews. py文件写个函数 \* 第二步: 在urls.py配置规则  ``` #views.py  from django.shortcuts import render  def hello\_world(request): return HttpResponse('hello world') ```  ``` #urls.py  from django.urls import path from hello import views  urlpatterns = \[ path('python/', views.hello\_world), \] ```   ## \*\*从请求到响应\*\*  \*\*什么是视图\*\* ``` 一个视图函数,简称视图,是一个简单的 Python函数 def view\_name() 定义视图函数  接受一个请求,返回一个响应。 ```   \*\*URL的设计\*\* \* 设计简单优雅的URL √ 使用正则表达式 √ 指定参数类型   \*\*Path参数解释\*\* \* route: URL匹配规则 \* view: 视图函数 \* name: 路由的名称 \* \*\*kwargs: 其他参数   \*\*path( )参数解释\*\* \* route: URL匹配规则 \* view: 视图函数 \* name: 路由的名称 \* \*\*kwargs: 其他参数   ## \*\*视图响应的内容\*\* \* 响应可以是 文本 HTML内容 图像 甚至是404、重定向等   \*\*小结\*\* \* 视图是一个 Python函数,用来处理htt请求 \* 通过path和 include配置, 将URL和视图函数关系建立起来   ## \*\*在视图中处理业务逻辑\*\* ### \*\*响应HTML内容\*\*  \* def view\_name( )定义视图函数  ``` from django.http import HttpResponse  def hello\_html(request): '''响应HTML内容''' html = ''' hello html ''' return HttpResponse(html) ```   ### \*\*获取URL参数\*\* \* 获取URL中的指定类型的参数  ``` URL规则: path('article//', views.article\_list),  输入URL: http://127.0.0.1:9527/hello/article/05/  视图编写: def article\_list(request, month): ''' :param request: :param month: 今年某个月的文章列表 :return: ''' return HttpResponse('article:{}'.format(month)) ```  \* 获取URL中的正则匹配的参数  ``` URL正则: re\_path(r'^article/(?P0?\[1-9\]|1\[-12\])/$', views.article\_list) ```    ### \*\*获取GET参数\*\*  \* 获取URL中的请求(GET/POST等) ``` 输入URL: http://127.0.0.1:8000/index/?year=2021  视图编写: def index(request): year = request.GET.get('year', None) ```   \* 小结: 原来参数还可以写在URL里   ## \*\*从文件响应HTML内容\*\*  \*\*原理解析\*\* \* 第一步,从磁盘读取HTML文件 \* 第二步,替换HTML中的特殊字符 \* 第三步,发送给浏览器   \*\*render\_to\_string( )函数\*\* ``` render\_to\_string( template\_name, context=None, request=None, using=None) ``` \* 参数解释 ``` template\_name: 模板名称 request: 请求对象 context: 模板上下文对象 (dict) using: 模板引擎名称 (如: Jinja2) ```   \*\*render()函数\*\* ``` render( request, template\_name, context=None, content\_type=None, status=None, using=None, ) ``` 参数解释: \* request: 请求对象 \* template\_name: 模板名称 \* context: 模板上下文对象(dict) \* content\_type: MIME类型,默认为text/html \* status: HTTP状态码 \* using: 模板引擎名称(如: jinja2)   ## \*\*请求与响应\*\*  !\[\](images/screenshot\_1628418550055.png)   \*\*请求对象 Httprequest\*\* \* 请求方式 method (POST/GET/...) \* 请求头信息 META/headers REMOTE\_ADDR\----请求的IP地址 Http\_User\_Agent\-----用户请求终端信息 \* 获取请求传递参数 GET\----GET请求参数 POST\-----POST请求参数 COOKIES\-----cookie信息 FILES\-----文件信息                 * [**Django的安装**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#Django_48) * [**Django项目的创建**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#Django_68) * [**启动开发服务器**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#_79) * [**runserver常用参数**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#runserver_87) * [**从请求到响应**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#_136) * [**视图响应的内容**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#_171) * [**在视图中处理业务逻辑**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#_187) * [**响应HTML内容**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#HTML_188) * [**获取URL参数**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#URL_209) * [**获取GET参数**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#GET_239) * [**从文件响应HTML内容**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#HTML_258) * [**请求与响应**](https://www.kancloud.cn/book/zjut_cheng/python_linux_mysql/edit#_306) * 初始Django框架 ~~~ Django的安装及项目的搭建 Django项目开发的基本流程 Django中从请求到响应的流程 视图、类视图、快捷视图函数、内置视图的重写 ~~~ * Django中的模板 ~~~ 模板引擎的选择和配置 模板语法(变量、标签) 模板的继承与包含 过滤器、自定义过滤器 ~~~ * Django介绍 ~~~ 开源免费的 Python高级Web框架,内置电池, 用于快速开发可靠、安全、可扩展的web应用 ~~~ * 使用 Django框架的开发步骤 ~~~ 步骤一:选择合适的版本 步骤二:安装及配置 步骤三:生成项目结构 步骤四:内容开发 步骤五:迭代、上线、维护 ~~~ * 版本兼容情况 ![](https://git.kancloud.cn/repos/zjut_cheng/python_linux_mysql/raw/e70719d85a80a3c2ca1188fc18e6ec8bf227ae6a/images/F6B746C6-1F0D-4435-BD0E-139E69595AB5.jpg?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjYxODc4NjcsImlhdCI6MTY2NjE0NDY2NywicmVwb3NpdG9yeSI6InpqdXRfY2hlbmdcL3B5dGhvbl9saW51eF9teXNxbCIsInVzZXIiOnsidXNlcm5hbWUiOiJ6anV0X2NoZW5nIiwibmFtZSI6InpqdXRfY2hlbmciLCJlbWFpbCI6InpqdXRfY2hlbmdAMTYzLmNvbSIsInRva2VuIjoiMGVlOTcyM2Y4MzdlMzhmYTQ2MGY1Y2Y2ZTNlMDkyM2MiLCJhdXRob3JpemUiOnsicHVsbCI6dHJ1ZSwicHVzaCI6dHJ1ZSwiYWRtaW4iOnRydWV9fX0.oozl9NCIrqIdzPxQUrv7gt8Gmz6rwFvqi7wiTgOM8WI) 当前选择版本:Django3.0 ## **Django的安装** * 方式一:pip安装【推荐】 `>>> pip3 install django` 或者指定安装源 `>>> pip3 install django -i https://pypi.tuna.tsinghua.edu.cn/simple` * 方式二:源码安装 `python setup.py install` * 检测是否安装成功 ~~~ >>>import django >>>django. version '3.0.5' ~~~ ## **Django项目的创建** * 方式一:使用命令行生成模板 `>>> django-admin[.py] startproject my_project` * 方式二:使用pyCharm创建项目 ![](https://git.kancloud.cn/repos/zjut_cheng/python_linux_mysql/raw/e70719d85a80a3c2ca1188fc18e6ec8bf227ae6a/images/screenshot_1621751638267.png?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjYxODc4NjcsImlhdCI6MTY2NjE0NDY2NywicmVwb3NpdG9yeSI6InpqdXRfY2hlbmdcL3B5dGhvbl9saW51eF9teXNxbCIsInVzZXIiOnsidXNlcm5hbWUiOiJ6anV0X2NoZW5nIiwibmFtZSI6InpqdXRfY2hlbmciLCJlbWFpbCI6InpqdXRfY2hlbmdAMTYzLmNvbSIsInRva2VuIjoiMGVlOTcyM2Y4MzdlMzhmYTQ2MGY1Y2Y2ZTNlMDkyM2MiLCJhdXRob3JpemUiOnsicHVsbCI6dHJ1ZSwicHVzaCI6dHJ1ZSwiYWRtaW4iOnRydWV9fX0.oozl9NCIrqIdzPxQUrv7gt8Gmz6rwFvqi7wiTgOM8WI) ## **启动开发服务器** **启动服务器** `>>> python3 manage.py runserver` ## **runserver常用参数** * 指定端口 ~~~ >>> python manage.py runserver 9527 ~~~ 生成目录如下: ![](https://git.kancloud.cn/repos/zjut_cheng/python_linux_mysql/raw/e70719d85a80a3c2ca1188fc18e6ec8bf227ae6a/images/screenshot_1621776164351.png?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjYxODc4NjcsImlhdCI6MTY2NjE0NDY2NywicmVwb3NpdG9yeSI6InpqdXRfY2hlbmdcL3B5dGhvbl9saW51eF9teXNxbCIsInVzZXIiOnsidXNlcm5hbWUiOiJ6anV0X2NoZW5nIiwibmFtZSI6InpqdXRfY2hlbmciLCJlbWFpbCI6InpqdXRfY2hlbmdAMTYzLmNvbSIsInRva2VuIjoiMGVlOTcyM2Y4MzdlMzhmYTQ2MGY1Y2Y2ZTNlMDkyM2MiLCJhdXRob3JpemUiOnsicHVsbCI6dHJ1ZSwicHVzaCI6dHJ1ZSwiYWRtaW4iOnRydWV9fX0.oozl9NCIrqIdzPxQUrv7gt8Gmz6rwFvqi7wiTgOM8WI) * 指定IP及端口 ~~~ >>> python manage.py runserver 0.0.0.0:9527 ~~~ 提示:[需要在settings.py](http://xn--settings-q86nz141b394a.py/)配置 ALLOWED\_HOSTS **创建模块** * 创建hello模块 `python manage.py startapp hello` **完成第一个页面** * 第一步: 在ⅵews. py文件写个函数 * 第二步: 在urls.py配置规则 ~~~ #views.py from django.shortcuts import render def hello_world(request): return HttpResponse('hello world') ~~~ ~~~ #urls.py from django.urls import path from hello import views urlpatterns = [ path('python/', views.hello_world), ] ~~~ ## **从请求到响应** **什么是视图** ~~~ 一个视图函数,简称视图,是一个简单的 Python函数 def view_name() 定义视图函数 接受一个请求,返回一个响应。 ~~~ **URL的设计** * 设计简单优雅的URL √ 使用正则表达式 √ 指定参数类型 **Path参数解释** * route: URL匹配规则 * view: 视图函数 * name: 路由的名称 * \*\*kwargs: 其他参数 **path( )参数解释** * route: URL匹配规则 * view: 视图函数 * name: 路由的名称 * \*\*kwargs: 其他参数 ## **视图响应的内容** * 响应可以是 文本 HTML内容 图像 甚至是404、重定向等 **小结** * 视图是一个 Python函数,用来处理htt请求 * 通过path和 include配置, 将URL和视图函数关系建立起来 ## **在视图中处理业务逻辑** ### **响应HTML内容** * def view\_name( )定义视图函数 ~~~ from django.http import HttpResponse def hello_html(request): '''响应HTML内容''' html = ''' <html> <body> <h1 style="color:#f00">hello html</h1> </body> </html> ''' return HttpResponse(html) ~~~ ### **获取URL参数** * 获取URL中的指定类型的参数 ~~~ URL规则: path('article/<int:month>/', views.article_list), 输入URL: http://127.0.0.1:9527/hello/article/05/ 视图编写: def article_list(request, month): ''' :param request: :param month: 今年某个月的文章列表 :return: ''' return HttpResponse('article:{}'.format(month)) ~~~ * 获取URL中的正则匹配的参数 ~~~ URL正则: re_path(r'^article/(?P<month>0?[1-9]|1[-12])/$', views.article_list) ~~~ ### **获取GET参数** * 获取URL中的请求(GET/POST等) ~~~ 输入URL: http://127.0.0.1:8000/index/?year=2021 视图编写: def index(request): year = request.GET.get('year', None) ~~~ * 小结: 原来参数还可以写在URL里 ## **从文件响应HTML内容** **原理解析** * 第一步,从磁盘读取HTML文件 * 第二步,替换HTML中的特殊字符 * 第三步,发送给浏览器 **render\_to\_string( )函数** ~~~ render_to_string( template_name, context=None, request=None, using=None) ~~~ * 参数解释 ~~~ template_name: 模板名称 request: 请求对象 context: 模板上下文对象 (dict) using: 模板引擎名称 (如: Jinja2) ~~~ **render()函数** ~~~ render( request, template_name, context=None, content_type=None, status=None, using=None, ) ~~~ 参数解释: * request: 请求对象 * template\_name: 模板名称 * context: 模板上下文对象(dict) * content\_type: MIME类型,默认为text/html * status: HTTP状态码 * using: 模板引擎名称(如: jinja2) ## **请求与响应** ![](https://git.kancloud.cn/repos/zjut_cheng/python_linux_mysql/raw/e70719d85a80a3c2ca1188fc18e6ec8bf227ae6a/images/screenshot_1628418550055.png?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjYxODc4NjcsImlhdCI6MTY2NjE0NDY2NywicmVwb3NpdG9yeSI6InpqdXRfY2hlbmdcL3B5dGhvbl9saW51eF9teXNxbCIsInVzZXIiOnsidXNlcm5hbWUiOiJ6anV0X2NoZW5nIiwibmFtZSI6InpqdXRfY2hlbmciLCJlbWFpbCI6InpqdXRfY2hlbmdAMTYzLmNvbSIsInRva2VuIjoiMGVlOTcyM2Y4MzdlMzhmYTQ2MGY1Y2Y2ZTNlMDkyM2MiLCJhdXRob3JpemUiOnsicHVsbCI6dHJ1ZSwicHVzaCI6dHJ1ZSwiYWRtaW4iOnRydWV9fX0.oozl9NCIrqIdzPxQUrv7gt8Gmz6rwFvqi7wiTgOM8WI) **请求对象 Httprequest** * 请求方式 method (POST/GET/...) * 请求头信息 META/headers REMOTE\_ADDR----请求的IP地址 Http\_User\_Agent-----用户请求终端信息 * 获取请求传递参数 GET----GET请求参数 POST-----POST请求参数 COOKIES-----cookie信息 FILES-----文件信息 已连接 1个文件被修改 阶段四:Django全栈项目开发实战.md