<>踩坑记 Django

Django Python

19.1.1.5 模板new_topic

做完书上的步骤后,对主题添加页面经行测试,但是浏览器显示 服务器异常。

个人采用的开发环境是virtual studio code , 测试起来很是难受,因为我配置的debug环境,断点操作没有作用。

经过我不断的测试,才发现我失败的原因是由于之前的误操作,先建立new_pizzas.py后改为new_pizzas.html的,错误就在这里。在我之后新建了my_new_pizzas.html后,测试成功了。

这个过程真的是很痛苦啊,奇怪的错误真的是有很多。

19.2 创建用户账户

登录成功后不能跳转到 pizzas:index

经过网上不断查证:

观看了博友的文章后:

https://www.cnblogs.com/quicksnow/p/4649737.html

受到了启发:

在项目 setting.py 添加

LOGIN_REDIRECT_URL = 'pizzas:index’

具体这种用法可以参考《反向解析URL》

https://www.liujiangblog.com/course/django/136

部署项目

部署参考

部署步骤

简要的梳理安装的步骤,重点是所遇到的错误以及解决方法。

项目文件

拷贝本地项目到服务器Linu端

配置数据库

连接数据库

运行项目在服务器 localhost

使用 curl 测试本地项目是否运行成功

curl测试

6. 注意 MySQL数据库可能会报错:

django2.2/mysql ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3

服务器端 nginx、uWSGI的安装

参考文章:

基本知识

web服务器和web框架

web服务器即用来接受客户端请求,建立连接,转发响应的程序。至于转发的内容是什么,交由web框架来处理,即处理这些业务逻辑。如查询数据库、生成实时信息等。Nginx就是一个web服务器,Django或flask就是web框架。

WSGI协议

只要web服务器和web框架满足WSGI协议,它们就能相互搭配。所以WSGI只是一个协议,一个约定。而不是python的模块、框架等具体的功能。

wsgi.py

django项目携带的一个wsgi接口文件

如果项目名叫project_name的话,此文件就位于[project_name/project_name/wsgi.py]

uWSGI

实现了WSGI协议的一个web服务器。即用来接受客户端请求,转发响应的程序。实际上,一个uWSGI的web服务器,再加上Django这样的web框架,就已经可以实现网站的功能了

Nginx

一个普通的个人网站,访问量不大的话,当然可以由uWSGI和Django构成。但是一旦访问量过大,客户端请求连接就要进行长时间的等待。这个时候就出来了分布式服务器,我们可以多来几台web服务器,都能处理请求。但是谁来分配客户端的请求连接和web服务器呢?Nginx就是这样一个管家的存在,由它来分配。这也就是由Nginx实现反向代理,即代理服务器。

参考

wsgi:一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。

利用它,web.py或bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了;

uwsgi:同WSGI一样是一种通信协议

uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,它与WSGI相比是两样东西。

uWSGI :一种python web server或称为Server/Gateway

uWSGI类似tornadoweb或者flup,是一种python web server,uWSGI是实现了uwsgi和WSGI两种协议的Web服务器,负责响应python 的web请求。

因为apache、nginx等,它们自己都没有解析动态语言如php的功能,而是分派给其他模块来做,比如apache就可以说内置了php模块,让人感觉好像apache就支持php一样。

uWSGI实现了wsgi协议、uwsgi协议、http等协议。 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

项目流程 这个是很重要的

首先客户端请求服务资源,

nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析,

如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,

如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;uWSGI 将接收到的包进行处理,并转发给wsgi,

wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi,

wsgi将返回值进行打包,转发给uWSGI,

uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。

*注:不同的组件之间传递信息涉及到数据格式和协议的转换

这个也是很重要的

1. 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程;

2. 在nginx上加上安全性或其他的限制,可以达到保护程序的作用;

3. uWSGI本身是内网接口,开启多个work和processes可能也不够用,而nginx可以代理多台uWSGI完成uWSGI的负载均衡;

4. django在debug=False下对静态文件的处理能力不是很好,而用nginx来处理更加高效。

一点说明

看了很多人部署的文章,但是他们都没有说明,最后需不需使用

python manage.py runserver 8000

来运行项目,答案是不需要。

不需要在个,项目就可以运行的。

最后的坑

注意 Linux 路径下 文件的下级目录用‘/’来表示,window好像不做严格区分‘\’‘/’都可以

如果出现404错误,可以检查项目、应用的 views.py。把‘\’替换掉就可以了。

下一步学习

学生管理系统

简单的前端

python从入门到实践django看不懂_Python编程:从入门到实践踩坑记 Django相关推荐

  1. python入门到实践试题及答案_python编程:入门到实践练习答案

    [实例简介] 书本<python编程:入门到实践>的课后练习答案 [实例截图] [核心代码] 练习答案 ├── Solutions - Chapter 10.docx ├── Soluti ...

  2. 看spring cloud开源项目Pig的云踩坑记

    最近看到一个有趣的开源项目pig,主要的技术点在认证授权中心,spring security oauth,zuul网关实现,Elastic-Job定时任务,趁着刚刚入门微服务,赶快写个博客分析一下.此 ...

  3. 谷歌大脑科学家亲解 LSTM:一个关于“遗忘”与“记忆”的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入门介绍了,看不懂的话欢迎关注「AI 科技

    谷歌大脑科学家亲解 LSTM:一个关于"遗忘"与"记忆"的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入 ...

  4. 动态规划入门到熟悉,看不懂来打我啊

    动态规划入门到熟悉,看不懂来打我啊 兔子hebtu666 本文链接:https://blog.csdn.net/hebtu666/article/details/100585136 2.1斐波那契系列 ...

  5. python的django看不懂_学Python Django学得很迷茫,怎么办?

    不请自来... 因为最近python有点"过火",所以作为一个新时代的新青年,也得学一下吧!于是乎我就开始了自学之路. 先说下自己目前的心路历程,再说下我对题主遇到的问题的看法和建 ...

  6. python从入门到实践_Python编程从入门到实践日记Day32

    Python编程从入门到实践日记Day32 第7章 函数(八) 1.传递任意数量的实参 - 使用任意数量的关键字实参 有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息.在这种情 ...

  7. python编程从入门到实践第八章_Python编程从入门到实践的第三天

    #-*- coding = utf-8 -*- #今天是12月24号了,天气阴,不是太好,这是我看Python编程从入门到实践的第三天,现在是上午,我是皮卡丘,这是我敲的第八章的代码 #第八章练习题1 ...

  8. 如何找到python廖雪峰基础_为什么看不懂廖雪峰的Python学习教程?

    先不要怀疑自己的智商,也许是你完全没有编程基础,这个时候,可以选个视频课程看看,B站还有各路公开课上有很多,自己找找. 或者觉得这样有点麻烦,那就花点钱,买个基础入门课程学学,试试下面的链接. 我觉得 ...

  9. python从入门到实践学习笔记_Python编程从入门到实践:学习笔记1(第二章)

    开通博客我用的理由是:读书学习时记笔记,一方面为了回顾,一方面为了督促自己.fighting! 学习Python,我买了Python编程从入门到实践. 我将从第二章开始记录我认为我以后会忘记以及重要的 ...

最新文章

  1. ik分词器 分词原理_Solr7.7.2中文分词器
  2. 王子与公主的另类结局
  3. 配置Win Server 2008 R2 防火墙允许远程访问SQL Server 2008 R2
  4. 用c实现部分java数组功能,很烂,留个参考吧
  5. 用 W32DASM看IF高级语法
  6. 微信网页开发教程 php,PHP实现微信网页授权开发教程,php授权教程_PHP教程
  7. 计算机组成原理写一个运算器,计算机组成原理运算器的实现实验报告.doc
  8. 如果现在单位让你内退,拿基本工资,不用上班,你是否愿意?
  9. Python关于File学习过程
  10. MySQL-第四篇索引
  11. 华为OJ-整形数组合并
  12. 谈如何整定PID参数
  13. 统计成绩及格率和优秀率题目
  14. python让solidworks自动建模_让机器学习自动帮我们建模,这4个Python库能让你大开眼界...
  15. 计算机二级Python第二弹课后题来袭!冲冲冲!!!
  16. YOLOV2 YOLO9000
  17. 国产示波器采用的ADC芯片
  18. 微信小程序开发页面无法显示,未注册报错
  19. GAPIT 3.0:全基因组关联分析与预测软件最新版发布
  20. 用记事本编写小游戏_一款适合你的记事本——提高你工作的效率!

热门文章

  1. (27)TLB番外篇——ShadowWalker
  2. 【Docker】Linux安装docker-compose
  3. deepin 安装 kvm-manager
  4. Tomcat8.5的【下载、安装、启动、各种问题结局】
  5. 项目: 用c++写一个养成类的游戏【QQ宠物】
  6. Oracle的in查询
  7. jQuery获取元素内容
  8. ajax获取单选按钮的值_【自学C#】|| 笔记 31 控件,按钮
  9. 真香,写代码神器!32寸曲面显示器免费送
  10. 如何入门技术、进阶技术(技术开发人员)