精华内容
下载资源
问答
  • 具体内容有:项目开发流程介绍,商城项目需求分析、数据库设计和项目程序设计,使用Django框架搭建Web商城项目主体结构。开发了商城项目的后台管理:登陆与退出、会员信息管理、商品类别管理和商品信息管理等模块。
  • python web项目开发常见步骤

    千次阅读 2017-11-06 10:02:19
    1. 前后端需要的技术及工具 开发平台: ubuntu(macOS)(推荐) 前后端分离 开发工具: sublime text3, vim, lsof, wget, git等 代码托管: git(推荐)/svn frontend: html5, css3, jquery, ...backend: python, flask/dj

    1. 前后端需要的技术及工具

    • 开发平台: ubuntu(macOS)(推荐)
    • 前后端分离
    • 开发工具: sublime text3, vim, lsof, wget, git等
    • 代码托管: git(推荐)/svn
    • frontend: html5, css3, jquery, nodejs, npm, bower, grunt, bootstrap等
    • backend: python, flask/django, mongodb, nginx, uwsgi, redis, supervisor等

    2. 根据页面所需进行建模(后端)

    • 确定针对用户群及用户对象
    • 确定数据及其相关过程
    • 定义数据(如数据类型、大小和默认值)
    • 确保数据的完整性(使用业务规则和验证检查)
    • 定义操作过程(如安全检查和备份)
    • 选择数据存储技术(如关系、分层或索引存储技术)

    3. 前端页面设计(前端+美工)

    • 团队间确认页面主题, 包括主题颜色, 字体大小, 图片尺寸, 保证页面整体风格一致
    • 页面在不同终端适配兼容
    • 和美工一起准备页面所需要的素材 ,包括页面中需要的内容, 文字, 图片等信息
    • 对页面元素进行排序, 如优先级, 更新时间 , 创建时间, 热度等 来进行排序
    • 使用npm或bower或grunt安装jquery, bootstrap等
    • 前端进行html, css, js实现布局及效果
    • 前端使用grunt工具对编写的css, js文件进行压缩处理
    • 文案的调整及确认

    4. 美工要求

    • 美工设计原型图, 然后交由前端实现设计图效果
    • 设计小图标
    • 确认尺寸及图片格式, 如jpg或png, 控制图片文件大小

    5. 后端设计

    • 采用markdown语法编写API文档, 包括请求方式, 请求路由, 上行参数, 下行参数, 返回结果示例
    • 接口代码编写
    • API设计遵循RESTful API风格
    • 编写后端代码先把需要的models, 接口方法确认, 命名好, 再来实现方法

    6. 部署环境

    • 选择主流的主机供应商, 如阿里云, AWS, vultr等购买云主机
    • 确认域名, 购买域名, 域名备案
    • 云主机环境搭建(fabric, mongodb, nginx, uwsgi, crontab, python, flask, virtualenvwrapper, docker, celery, redis, rabbitmq等)

    7. 其他

    7.1. 注意编写规范
    • 文字命名
    • 变量命名
    • 方法命名
    • 类命名
    • 行代码字符数量控制, 如满80个字符考虑使用换行符
    • 合理使用空格和空行, 便于阅读, 理解逻辑
    • 合理使用注释
    7.2. 选择在线git仓库进行协作开发
    • 如常用的github(public推荐), gitlab(private推荐), bitbucket(private推荐)等进行代码管理

    待完善ing…

    展开全文
  • 本周课程主要通过Django框架开发Web商城项目,特别是网站的前台模块。具体内容有:商城前台界面搭建,会员注册登录与退出、商品展示,购物车实战、会员下单操作,后台订单处理,前台会员中心的订单处理等模块开发。...
  • Python Web项目

    千次阅读 2019-07-01 17:10:31
    Python3.7.3+Django2.2.2 一 项目创建 1 在 D:\pythonTest 目录下按住 Shift + 鼠标右键 进入命令提示符 2 创建:django-admin startproject demo, 查看:dir或ls 二 启动 Django 服务 1 进入项目目录,并执行...

    在Windows上提前部署:Python3.7.3+Django2.2.2

    一 项目创建
    1 在 D:\pythonTest 目录下按住 Shift + 鼠标右键 进入命令提示符
    在这里插入图片描述
    2 创建:django-admin startproject demo
    查看:dir或ls
    在这里插入图片描述
    在这里插入图片描述
    二 启动 Django 服务
    1 进入项目目录,并执行启动命令
    PS D:\pythonTest\demo> python manage.py runserver
    在这里插入图片描述
    2 打开浏览器,在地址栏中输入:http://127.0.0.1:8000/
    “127.0.0.1” 是指本地主机,8000 是默认的服务端口,可修改。也可以在地址栏输入 localhost:8000 访问项目。
    在这里插入图片描述
    三 创建Django APP
    1 在D:\pythonTest\demo下创建一个myapp的应用,执行命令:

    python manage.py startapp myapp
    

    2 在demo目录下,查看多了一个myapp文件夹。
    在这里插入图片描述
    3 在myapp中,创建了相关的应用文件,现在整个项目结构如下:
    在这里插入图片描述
    4 在demo路径下,再执行启动web服务器命令:

    python manage.py runserver
    

    5 测试访问本机的admin,使用浏览器访问:
    在这里插入图片描述

    6 在demo目录下创建templates文件夹,并在该文件夹中创建一个index.html文件,用于展示网页的内容。
    在这里插入图片描述
    index.html文件,内容模板如下:
    (可以自己编辑内容)

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <title>Hello,Django!</title>
    
      <style type="text/css">
        html {
          width: 100%;
          height: 100%;
          overflow: hidden;
          font-style: sans-serif;
        }
    
        body {
          width: 100%;
          height: 100%;
          font-family: 'Open Sans', sans-serif;
          margin: 0;
          background-color: #9FF781;
        }
    
        #login {
          position: absolute;
          top: 50%;
          left: 50%;
          margin: -150px 0 0 -150px;
          width: 300px;
          height: 300px;
        }
    
        #login h1 {
          color: #fff;
          text-shadow: 0 0 10px;
          letter-spacing: 1px;
          text-align: center;
        }
    
        h1 {
          font-size: 2em;
          margin: 0.67em 0;
        }
    
        input {
          width: 278px;
          height: 18px;
          margin-bottom: 10px;
          outline: none;
          padding: 10px;
          font-size: 13px;
          color: #fff;
          text-shadow: 1px 1px 1px;
          border-top: 1px solid #312E3D;
          border-left: 1px solid #312E3D;
          border-right: 1px solid #312E3D;
          border-bottom: 1px solid #56536A;
          border-radius: 4px;
          background-color: #2D2D3F;
        }
    
        .but {
          width: 300px;
          min-height: 20px;
          display: block;
          background-color: #4a77d4;
          border: 1px solid #3762bc;
          color: #fff;
          padding: 9px 14px;
          font-size: 15px;
          line-height: normal;
          border-radius: 5px;
          margin: 0;
        }
      </style>
    </head>
    
    <body>
      <div id="login">
        <h1>Hello,My First Django!</h1>
      </div>
    </body>
    
    </html>
    
    

    7 添加新建的APP,打开D:\pythonTest\demo\demo目录下的settings.py文件。
    (提示:修改以下的*.py文件可以使用Notepad++软件进行编辑)
    在这里插入图片描述
    找到INSTALLED_APPS,添加代码:'myapp',
    在这里插入图片描述

    8 编辑视图函数,打开D:\pythonTest\demo\myapp目录下的views.py文件
    在这里插入图片描述
    添加如下代码:
    在这里插入图片描述
    9 添加路由,打开D:\pythonTest\demo\demo目录下的urls.py文件。
    在这里插入图片描述
    添加如下代码
    在这里插入图片描述
    10 执行python manage.py runserver启动Django web服务器,在浏览器中访问。结果如下,完成。
    在这里插入图片描述

    四 常用命令

    django-admin.py startproject myweb   #创建项目
    python manage.py startapp myapp   #创建 app
    python manage.py runserver   #启动 Django 中的开发服务器
    python manage.py -h   #帮助文档
    python manage.py <command> [options] #Django 命令
    

    五 项目过程中遇到的问题及解决方法

    1 创建项目时出现拒绝访问问题:http://127.0.0.1:8000/admin
    在这里插入图片描述
    解决:
    修改文件PythonTest的权限:
    右键点击 属性——》安全——》编辑——勾选完全控制
    在这里插入图片描述

    展开全文
  • Python web全栈开发学习路线:

    千次阅读 2019-05-05 15:02:46
    Python web全栈开发学习路线: 一、Linux运维 Python基础 进阶: Linux运维: Linux安装,网络基础知识点,ISO七层模型,Linux基本命令,Linux文件系统,Linux常用命令,Linux权限管理,Linux用户管理,Linux编辑器...

    Python web全栈开发学习路线:
    一、Linux运维 Python基础 进阶:
    Linux运维:
    Linux安装,网络基础知识点,ISO七层模型,Linux基本命令,Linux文件系统,Linux常用命令,Linux权限管理,Linux用户管理,Linux编辑器vim,shell脚本,Linux防火墙,Linux-LNMP架构原理搭建等
    Python前奏:
    认识Python、相关开发工具安装(sublime/pycharm)。
    基础语法:
    Python安装、print语句、变量、注释、输入输出、运算符、数据类型转换、列表及其操作、字典及其操作、元组及其操作、if判断语句、while循环、for循环、局部变量和全局变量、字符串及其操作。
    函数高级:
    关键字参数、函数的返回值、位置参数、可变参数、lambda表达式、递归函数、参数引用、常用内置函数。
    类和对象:
    面向对象思想接收啊、类的定义、对象的创建、__new__魔术方法、__init__魔术方法、__str__魔术方法、__del__魔术方法、self的作用、对象诚意访问权限控制、单继承、多继承、多态、类属性、实例属性、单例设计模式、工厂设计模式等。
    文件操作:
    文件打开与关闭、文件的读写操作、文件指针读取和定位。案例:1、文件批量复制。2、文件批量改名。3、宠物寄养管理系统。4、面向对象版宠物寄养管理系统。5、文件加密存储软件。
    模块和包:
    模块介绍、包介绍、import语句、from…import…语句、import…as…语句、__all__魔术变量、循环导入问题、安装第三方库、发布模块到pip。
    异常处理:
    异常介绍、捕获异常、异常的传递和处理、try…except…语句介绍、自定义异常。
    生成器:
    生成器概念、如何编写生成器、yield关键字、send和__next__函数。
    迭代器:
    迭代器介绍、迭代器判断、iter函数。
    装饰器:
    装饰器介绍、装饰器原理、带参数的装饰器、wraps装饰器。
    多任务编程:
    进程介绍、多进程编程、multiprocessing库、进程间通信、多进程使用案例、线程介绍、多线程编程、threading库介绍、全局变量与锁极致、生产者与消费者模式、ThreadLocal、GIL全局解释器锁、协程介绍、gevent库和greenlet库。
    网络编程:
    socket套接字、tcp协议、tcp三次握手和四次挥手、udp协议、端口、tcp发送和接收数据、udp发送和接收数据、仿QQ聊天室。

    二、前端开发:
    HTML5:
    html概述和基本结构、html标题标签、html段落标签、换行标签、块标签、图片标签、a链接标签、列表标签、表格、表单、页面布局等。
    CSS3:
    CSS基本语法和页面引用、CSS文本设置、颜色表示法、CSS选择器、盒子模型、盒子模型实际尺寸、浮动、四大定位、块元素、行内元素、行内块元素、权重、圆角、阴影、transform变换、animation动画。
    京东综合案例:
    使用div css布局完成一个完整的页面,使用CSS3实现动画效果。
    JavaScript:
    JavaScript基本语法、常用数据结构、编码规范、JavaScript常用内置方法、对象的创建方式和this讲解。
    Web API:
    BOM操作、DOM操作、页面布局、事件处理、浏览器兼容性处理等。
    JavaScript高级:
    JavaScript中的对象、JSON、闭包、原型链、函数节流、正则表达式等。
    jQuery:
    jQuery选择器、jQuery动画、jQuery事件监听、ajax数据交互、JSONP跨域。
    移动端web:
    移动端屏幕介绍、移动端浏览器介绍、移动端操作系统介绍、Viewport、rem布局、触屏touch事件、移动端框架、CSS与处理器less等。
    Vue.js:
    常用系统指令、数据绑定、过滤器、生命周期、组件化、路由、Vue组建、Vue过度效果、路由(vue-router库)、vue-resource、es6语法、webpack的使用、项目打包与发布、包管理等。

    三、数据库和缓存:
    MySQL数据库:
    MySQL的安装、数据库的连接、图形操作窗口、命令行操作窗口、常用数据类型、表的设计、外键、多对多、范式、条件查找、聚合、分组、排序、连接、视图、事务、存储过程、索引、触发器、数学函数、日期函数、用Python操作数据库、MySQLdb库、ORM、SQLAlchemy框架
    memcached缓存系统:
    memcached的安装、连接、memcached数据类型、add命令、增删改查及统计命令、内存分配机制、分布式memcached、Python操作memcached。
    Redis缓存数据库:
    redis的安装与连接、string结构及命令详解、list结构及命令详解、set结构及详解、order set结构及详解、hash结构及详解、redis事务及锁应用、频道发布与订阅、rdb持久化、aof持久化、redis主从复制、aof恢复与rdb服务器间迁移、redis最佳实践。
    MongoDB数据库:
    NoSQL介绍、MongoDB安装、MongoDB库标操作语句、CURD操作详解、深入查询表达式、游标操作、索引、用户管理、MongoDB备份与恢复、replication复制集、shard分片、手动预先分片、replcation与shard分片结合使用、Python操作MongoDB、MongoDB最佳实践。

    四、Python web开发:
    Django web框架:
    URL与视图、Request和Response对象、DTL模版、模型、表单、中间件、上下文处理器、django自带admin、cookie和session机制、用户,权限和组、CSRF和XSS攻击原理。
    Django项目实战:互联网公司官网:
    1、内容:前台用户登录、注册、注销、新闻列表、新闻详情、新闻推荐、banner图、新闻异步加载、新闻分类、在线课程视频列表、课程购买、加密视频播放与限制、付费资讯列表、付费资讯购买、搜索、后台用户管理、后台新闻管理与发布、后台banner管理、后台课程管理、后台付费资讯管理2、第三方技术:adminLTE、rest_framework、restful接口、富文本编辑器、七牛云存储、视频加密播放、图形验证码、短信验证码、分页、ajax请求、搜索、微信和支付宝支付、gulp工作流、git代码管理、memcached缓存、redis缓存、celery消息队列、https部署、Docker。
    Flask web框架:
    使用Flask开发一个企业级别的论坛项目。课程内容完全按照企业标准而设计和讲解的。其中包括CMS后台管理,有帖子管理、板块管理,用户管理,轮播图管理、分组管理、权限管理等部分。前台也包括发布帖子,帖子列表、帖子分页、帖子详情、评论、点赞、上传头像等功能。在这些功能中,包括了图形验证码、短信验证码、Ajax技术、jQuery、BootStrap3、邮件发送、Celery异步、七牛云存储、Linux部署等第三方服务和技术。让你学完后可以无缝转移到企业项目开发。
    Tornado web框架:
    Tornado介绍、Tornado基础、Tornado接口与模版、Tornado数据库、Tornado安全性、Tornado异步与websocket。Tornado项目实战:1、内容:微信小程序:微信小程序页面布局语法、移动端页面布局、常用组件、常用API开发、自定义组件、微信登录、微信支付、websocket聊天等。2、功能:查看房源、按条件搜索房源、发布房源、聊天功能、打赏功能、个人详情页等。3、管理后台:审核房源、管理房源、消息管理、权限管理等。
    Python学习规划:
    第一:找一套完整的课时,配套视频,代码,笔记和一个好的老师为你做辅导解答。第二:看一本好的书籍,选择适合自己的最重要,这里我就不一一做推荐。第三:多练习,多巩固,多巧代码,等等。。
    其实要学的东西很多,但是要记住,我们是程序员,就要不断的去学习和总结,持之以恒,厚积薄发~~
    欢迎和我一块进阶技术
    python学习方式
    新知识点:
    1.了解新知识的概念。(搜索相关资料)
    2.结合例子逐行理解分析。
    3.结合资料以及例子做好笔记。
    4.通过练习题目来巩固及发现问题。
    5.自己独立完成小项目。
    复习旧的知识:
    1.查找笔记。
    2.网络搜索。
    3.写代码巩固知识点。
    写项目的过程:
    1.分析问题。(变量、方法、流程。)
    2.理清项目的书写流程以及代码实现的流程。
    3.按照程序格式书写。(如:第一步写类,第二部定义类变量和实例变量等。。。)
    4.检查修改程序错误。
    5.重构代码,代码美观,精简冗余代码。
    项目遇到的问题:
    1.一般错误,根据错误提示,定位到代码错误位置,修改源码。
    2.逻辑错误,理清程序执行步骤,定位程序错误位置,修改源码。
    3.未知错误,结合错误问题,网络查询资料以及他人给出的意见,修改源码。
    推荐的书籍
    1、《Python学习手册:第3版
    个人认为《Python学习手册:第3版》是学习语言基础比较好的书了.
    《Python学习手册(第3版)》是作者根据过去10年用于教学而广为人知的培训课程的材料编写而成的。除了有许多详实说明和每章小结之外,每章还包括一个头脑风暴:这是《Python学习手册(第3版)》独特的一部分,配合以实用的练习题和复习题,让读者练习新学的技巧并测试自己的理解程度。
    《Python学习手册(第3版)》包括:
    类型和操作——深入讨论Python主要的内置对象类型:数字、列表和字典等。
    语句和语法——在Python中输入代码来建立并处理对象,以及Python一般的语法模型。
    函数——Python基本的面向过程工具,用于组织代码和重用。
    模块——封装语句、函数以及其他工具,从而可以组织成较大的组件。
    类和OOP——Python可选的面向对象编程工具,可用于组织程序代码从而实现定制和重用。
    异常和工具——异常处理模型和语句,并介绍编写更大程序的开发工具。
    讨论Python 3.0。
    《Python学习手册(第3版)》让你对Python语言有深入而完整的了解,从而帮助你理解今后遇到的任何Python应用程序实例。如果你准备探索Google和YouTube为什么选中了Python,《Python学习手册(第3版)》就是你入门的最佳指南。
    2、《Python基础教程(第2版·修订版)》
    《Python基础教程(第2版·修订版)》也是经典的Python入门教程,层次鲜明,结构严谨,内容翔实,特别是最后几章,作者将前面讲述的内容应用到10个引人入胜的项目中,并以模板的形式介绍了项目的开发过程,手把手教授Python开发,让读者从项目中领略Python的真正魅力。这本书既适合初学者夯实基础,又能帮助Python程序员提升技能,即使是Python方面的技术专家,也能从书里找到耳目一新的内容。
    3、《“笨办法”学Python(第3版)》
    《“笨办法”学Python(第3版)》是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的初学者使用。这本书结构非常简单,其中覆盖了输入/输出、变量和函数三个主题,以及一些比较高级的话题,如条件判断、循环、类和对象、代码测试及项目的实现等。每一章的格式基本相同,以代码习题开始,按照说明编写代码,运行并检查结果,然后再做附加练习。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲授到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。
    4、Python核心编程:第2版
    丰厚的项目经验是找工作的必要条件。

    展开全文
  • 大家好,我叫亓官劼(qí guān jié ),这个《小白都能看懂的实战教程 手把手教你Python Web全栈开发》是一个零基础的实战教程,手把手带你开发一套系统,带你了解Python web全栈开发,目前正在连续更新中,如果...

    大家好,我叫亓官劼(qí guān jié ),这个《小白都能看懂的实战教程 手把手教你Python Web全栈开发》是一个零基础的实战教程,手把手带你开发一套系统,带你了解Python web全栈开发,目前正在连续更新中,如果喜欢的话可以点赞关注博主,后面会持续更新。

    博主博客文章内容导航(实时更新)
    更多优质文章推荐:

    本项目所有源码在GitHub开源,GitHub地址为:OnlineForumPlatform有需要源码可以前去查看,喜欢的话可以star一下

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 DAY 5

      今天来到我们实战系列的第五天,在之前的四天里,我们已经完成了在线论坛系统的导航条、登录、注册、论坛页面、帖子详情页面等的功能实现,目前我们的论坛已经可以进行帖子发布,查看帖子详情,并且进行回复信息了。在上一讲中,我们还是先了功能限制,对不同用户的访问进行过滤。下面我们继续来完善我们的这个在线论坛系统,今天我们来完善我们的在线论坛系统的个人中心。

    5.1个人中心页面实现

      今天我们就来实现我们的个人中心页面,这里本来是打算使用AJAX实现的,个人中心使用AJAX实现的话,可以使得整体不变,当我们点击各个分栏的时候只返回各个分栏的信息,是一个非常好的选择。但是由于这个系列打算让每一个看的人都能够看懂,实现这个功能,所以我们这简化一点,直接使用普通的一个请求页面。后面有兴趣的同学可以进行进一步的优化,后面有空的话,我也会将后面逐渐优化的教程发出来。

      本文原创为CSDN博主亓官劼,原文链接为:收藏!最详细的Python全栈开发指南 看完这篇你还不会Python全栈开发 你来打我!!!,请大家支持原创,拒绝抄袭。

    5.1.1 个人中心页面-后端

      那我们就开始实现我们我的个人中心了,这里我们的个人中心只显示我们的一些基础资料(我们也没设置多少),这里只做一个大致的样式展示,更多的功能我们后续慢慢的进行一个拓展。
      我们去看了一下我们的数据库,发现我们个人中心能够进行展示的,也就只有我们的email、昵称、用户类型、创建时间和手机号码可以进行一个展示和修改。那我们就展示这么多吧,大家也可以添加一下个性签名,头像等一系列的个人标识进入数据库中。
      那我们就开始获取我们的数据了,首先我们需要限制只有登录的用户才可以进入到我们的个人中心,限制的方法在上一讲中已经实现了。

    # 个人中心
    @app.route('/personal')
    @login_limit
    def personal():
        if request.method == 'GET':
            email = session.get('email')
            try:
                cur = db.close()
                sql = "select email, nickname, type, create_time, phone from UserInformation where email = '%s'" % email
                db.ping(reconnect=True)
                cur.execute(sql)
                personal_info = cur.fetchone()
            except Exception as e:
                raise e
            return render_template('personal.html',personal_info = personal_info)
    

    5.1.2 个人中心页面-前端

      在后端获取完数据之后,我们在前端对获取到的数据进行展示即可。所以我们先设计个勉强能够看得过去的架子,来展示我们的数据。先上个效果图吧:在这里插入图片描述
    确实是比较简陋的,但是功能齐全吧。我们这里使用的是<table>标签进行显示的,也可以使用<li>进行显示。这里时间上代码吧,personal.html的代码为:

    {% extends 'base.html' %}
    
    {% block title %}
    个人中心
    {% endblock %}
    
    {% block css %}
    <link rel="stylesheet" href="/static/css/personal.css">
    {% endblock %}
    
    {% block content %}
    <div class="personal_content">
        <div class="page-header" id="page_header">
          <h1>个人中心<small>Personal center</small></h1>
        </div>
        <div class="personal_info">
            <table>
                <tr class="personal_tr">
                    <td class="personal_td">
                        Email address:
                    </td>
                    <td class="personal_td">
                        {{ personal_info[0] }}
                    </td>
                </tr>
                <tr class="personal_tr">
                    <td class="personal_td">
                        昵称:
                    </td>
                    <td class="personal_td">
                        {{ personal_info[1] }}
                    </td>
                </tr>
                <tr class="personal_tr">
                    <td class="personal_td">
                        注册时间:
                    </td>
                    <td class="personal_td">
                        {{ personal_info[3] }}
                    </td>
                </tr>
                <tr class="personal_tr">
                    <td class="personal_td">
                        手机号:
                    </td>
                    <td class="personal_td">
                        {{ personal_info[4] }}
                    </td>
                </tr>
                <tr class="personal_tr">
                    <td class="personal_td">
                        用户类型:
                    </td>
                    <td class="personal_td">
                        {% if personal_info[2] == 0 %}
                            普通用户
                        {% else %}
                            管理员
                        {% endif %}
                    </td>
                </tr>
            </table>
        </div>
    </div>
    {% endblock %}
    

    personal.css代码为:

    .personal_content{
        margin-left: 20%;
        margin-right: 20%;
        margin-top: 5%;
    }
    #page_header{
        text-align: center;
    }
    
    .personal_info{
        font-size: 24px;
        margin-left: 10%
    ;
    }
    
    .personal_td{
        width: 300px;
    }
    
    .personal_tr{
        height: 50px;
    }
    

    同时这里也修改了base.html的内容,我们让个人中心在下拉列表中进行显示,我们修改了下拉列表中第一个值和链接,效果图为:在这里插入图片描述
    这里的修改的代码为:

    <li class="dropdown">
                          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ nickname }} <span class="caret"></span></a>
                          <ul class="dropdown-menu">
                            <li><a href="{{ url_for('personal') }}">个人中心</a></li>
                            <li><a href="#">Another action</a></li>
                            <li><a href="#">Something else here</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="#">Separated link</a></li>
                          </ul>
                        </li>
    

    5.2 修改密码功能实现

      到这里我们来实现我们的修改密码功能,其实如果使用AJAX实现的话,这一讲的所有功能都应该在个人中心一个页面中进行体现的,我们这里就先这样分开实现吧。大家可以自行改进~
      在这里我们就先从前端开始实现了。

      本文原创为CSDN博主亓官劼,原文链接为:收藏!最详细的Python全栈开发指南 看完这篇你还不会Python全栈开发 你来打我!!!,请大家支持原创,拒绝抄袭。

    5.2.1 修改密码功能实现-前端

      我们修改密码的话,这里采用一个简单的验证,就是知道我们当前的密码就可以进行一个修改密码。我们设计一个表单,分别输入旧密码,新密码,确认新密码即可。先上个效果图再说实现:在这里插入图片描述
      这效果图还是大家熟悉的味道,有没有!我们这里还是一个简单的div,里面加个页头,下面3个input。这里和前面的原理一样,这里我们预留了一个flash传输消息的地方,用于等会后端向前面传递消息提示,我们就直接上代码吧:
    change_password.html:

    {% extends 'base.html' %}
    
    {% block title %}
    修改密码
    {% endblock %}
    
    {% block css %}
    <link rel="stylesheet" href="/static/css/change_password.css">
    {% endblock %}
    
    {% block content %}
    <div class="change_password_content">
        <div class="page-header" id="page_header">
          <h1>修改密码<small>Change Password</small></h1>
        </div>
        <div class="change_password_div">
            <form method="post">
                <span style=" font-size:20px;color: red" >
                    {% for item in get_flashed_messages() %}
                    {{ item }}
                    {% endfor %}
                </span>
                <div class="form-group">
                    <label for="exampleInputPassword1">旧密码:</label>
                    <input type="password" class="form-control" name="old_password" id="exampleInputPassword1" placeholder="密码">
                </div>
                <div class="form-group">
                    <label for="exampleInputPassword1">新密码:</label>
                    <input type="password" class="form-control" name="new_password1" id="exampleInputPassword1" placeholder="密码">
                </div>
                <div class="form-group">
                    <label for="exampleInputPassword1">确认密码:</label>
                    <input type="password" class="form-control" name="new_password2" id="exampleInputPassword1" placeholder="密码">
                </div>
                <div id="password_butt">
                  <button type="submit" class="btn btn-default">修改密码</button>
              </div>
            </form>
        </div>
    </div>
    {% endblock %}
    

    change_paasword.css:

    #page_header{
        text-align: center;
    }
    .change_password_content{
        margin-left: 20%;
        margin-right: 20%;
        margin-top: 8%;
    }
    #password_butt{
        text-align: center;
    }
    

    5.2.1 修改密码功能实现-后端

      下面我们来实现修改密码的后端功能,使他能够正确的修改密码。我们首先获取我们的当前登录用户的用户名,这里我们的修改密码的功能也是只有我们登录的用户才可以访问的功能。首先我们判断是不是3个数据都获取到了,并且2个密码一致,如果有错误,我们返回提示。如果数据都正确的话,我们开始处理,先获取我们的email。我们获取到email之后去数据库中查找我们的密码,这里的密码是加密的,所以我们要使用check_password_hash()来进行验证,如果旧密码是正确的,我们就进行修改新密码,如果不正确,则返回。完整的后端代码为:

    # 修改密码
    @app.route('/change_password',methods=['GET','POST'])
    @login_limit
    def change_password():
        if request.method == 'GET':
            return render_template('change_password.html')
        if request.method == 'POST':
            old_password = request.form.get('old_password')
            new_password1 = request.form.get('new_password1')
            new_password2 = request.form.get('new_password2')
            if not all([old_password,new_password1,new_password2]):
                flash("信息填写不全!")
                return render_template('change_password.html')
            if new_password1 != new_password2:
                flash("两次新密码不一致!")
                return render_template('change_password.html')
            email = session.get('email')
            try:
                cur = db.cursor()
                sql = "select password from UserInformation where email = '%s'" % email
                db.ping(reconnect=True)
                cur.execute(sql)
                password = cur.fetchone()[0]
                if check_password_hash(password,old_password):
                    password = generate_password_hash(new_password1, method="pbkdf2:sha256", salt_length=8)
                    sql = "update UserInformation set password = '%s' where email = '%s'" % (password,email)
                    db.ping(reconnect=True)
                    cur.execute(sql)
                    db.commit()
                    cur.close()
                    return render_template('index.html')
                else:
                    flash("旧密码错误!")
                    return render_template('change_password.html')
            except Exception as e:
                raise e
    

    在实现后端功能之后,我们可以再导航栏中加入修改密码的导航,我们还是加载下来列表中,将第二个修改为修改密码。

    <li class="dropdown">
      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ nickname }} <span class="caret"></span></a>
      <ul class="dropdown-menu">
        <li><a href="{{ url_for('personal') }}">个人中心</a></li>
        <li><a href="{{ url_for('change_password') }}">修改密码</a></li>
        <li><a href="#">Something else here</a></li>
        <li role="separator" class="divider"></li>
        <li><a href="#">Separated link</a></li>
      </ul>
    </li>
    

    效果为:在这里插入图片描述

    5.3 查看发布帖子功能实现-后端

    5.3.1 查看发布帖子功能实现-后端

      下面我们来实现个人中心的另一个功能,就是查看我们自己所发布的所有的帖子信息,并且可以在此页面进入到我们所发布的帖子中去。这里我们还是先写后端,向前端去传输我们的数据。这个页面是也是需要我们登录才可以查看的,因为查看的是我们所登录的这个账号所发布的帖子列表。
      所以这里我们先获取我们需要的数据,然后把它返回到前端即可,这里先创建一个前端的html文件,这里使用show_issue.html,我们后端的代码为:

    # 查看已发布的帖子
    # 查看已发布的帖子
    @app.route('/show_issue')
    @login_limit
    def show_issue():
        if request.method == 'GET':
            email = session.get('email')
            try:
                cur = db.cursor()
                sql = "select ino, email, title, issue_time from Issue where email = '%s' order by issue_time desc" % email
                db.ping(reconnect=True)
                cur.execute(sql)
                issue_detail = cur.fetchall()
            except Exception as e:
                raise e
            return render_template('show_issue.html',issue_detail=issue_detail)
    

    5.3.2 查看发布帖子功能实现-前端

      下面我们开始实现前端的一个功能,我们这里使用和论坛列表相似的功能,我们这里只需要显示帖子的标题即可。这里先上效果图:在这里插入图片描述
    我们这里只需要设计一个<li>将我们后端发送的数据仅显示出来即可。show_issue.html:

    {% extends 'base.html' %}
    
    {% block title %}
    已发布的帖子
    {% endblock %}
    
    {% block css %}
    <link rel="stylesheet" href="/static/css/show_issue.css">
    {% endblock %}
    
    {% block content %}
    <div class="show_issue_content">
        <div class="page-header" id="page_header">
            <h1>已发布的帖子列表</h1>
        </div>
        <div class="issue_list_div">
            <ul class="issue_list_ul">
                {% for issue in issue_detail %}
                    <li class="issue_list_li">
                        <div class="issue_div">
                            <div class="issue_content">
                                <h3>
                                    <a href="{{ url_for('issue_detail',Ino = issue[0]) }}">
                                        {{ issue[2] }}
                                    </a>
                                </h3>
                            </div>
                            <div class="author_info">
                                <p class="post-info">
                                    <span>发布时间:{{ issue[3] }}</span>
                                </p>
                            </div>
                        </div>
                    </li>
                {% endfor %}
            </ul>
        </div>
    </div>
    {% endblock %}
    

    show_issue.css:

    #page_header{
        text-align: center;
    }
    
    .issue_list_ul{
        list-style-type: none;
        margin-left: 0;
        padding-left: 0;
    }
    .author_info{
        text-align: right;
    }
    
    .issue_div{
        border-bottom:1px solid #eee;
    }
    
    .issue_content{
        max-height: 200px;
    }
    .show_issue_content{
        margin-right: 20%;
        margin-left: 20%;
        margin-top: 8%;
    }
    

    这里我们也修改一下base.html文件,设置下来列表。在这里插入图片描述
    我们在导航栏的下拉列表中添加我们这章个人中心的三个页面,这里贴一下目前base.html的全部代码,防止有的小伙伴找不到修改的地方。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>
            {% block title %}
    {#        其他页面重写标题的地方#}
            {% endblock %}
        </title>
        {% block css %}
    {#    其他页面引用样式或者js的地方#}
        {% endblock %}
        <link rel="stylesheet" href="/static/css/base.css">
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
        <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.0/js/bootstrap.min.js"></script>
        <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.0/css/bootstrap.min.css" rel="stylesheet">
    </head>
    <body>
        <div class="navigation_bar">
            <nav class="navbar navbar-default">
              <div class="container-fluid">
    {#              由于这里我们不需要使用商标,所以对Bran部分进行了删除#}
                <!-- Collect the nav links, forms, and other content for toggling -->
                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                  <ul class="nav navbar-nav">
                    <li class="{% block index_class %}{% endblock %}"><a href="{{ url_for('index') }}">首页<span class="sr-only">(current)</span></a></li>
                    <li class="{% block formula_class %}{% endblock %}"><a href="{{ url_for('formula') }}">论坛</a></li>
                  </ul>
                  <form class="navbar-form navbar-left">
                    <div class="form-group">
                      <input type="text" class="form-control" placeholder="Search">
                    </div>
                    <button type="submit" class="btn btn-default">Submit</button>
                  </form>
                  <ul class="nav navbar-nav navbar-right">
                    {% if email %}
                        <li class="{% block post_issue_class %}{% endblock %}"><a href="{{ url_for('post_issue') }}">发布帖子</a></li>
                        <li class=""><a href="{{ url_for('register') }}">注销</a></li>
                        <li class="dropdown">
                          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ nickname }} <span class="caret"></span></a>
                          <ul class="dropdown-menu">
                            <li><a href="{{ url_for('personal') }}">个人中心</a></li>
                            <li><a href="{{ url_for('change_password') }}">修改密码</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="{{ url_for('show_issue') }}">已发布的帖子</a></li>
                          </ul>
                        </li>
                    {% else %}
                        <li class="{% block register_class %}{% endblock %}"><a href="{{ url_for('register') }}">注册</a></li>
                        <li class="{% block login_class %} {% endblock %}"><a href="{{ url_for('login') }}">登录</a></li>
                    {% endif %}
                  </ul>
                </div><!-- /.navbar-collapse -->
              </div><!-- /.container-fluid -->
            </nav>
        </div>
        <div class="content" style="padding: 0;margin: 0;">
            {% block content %}
    {#        其他页面重写页面内容的地方#}
            {% endblock %}
        </div>
    </body>
    </html>
    

      感谢大家的关注、点赞和收藏,DAY 6在凌晨也已经出啦,这是一个系列,从DAY1开始,大家可以从头看呦,有需要的可以收藏~

      本文原创为CSDN博主亓官劼,原文链接为:收藏!最详细的Python全栈开发指南 看完这篇你还不会Python全栈开发 你来打我!!!,请大家支持原创,拒绝抄袭。

    展开全文
  • 转载自: 浅谈Java Web开发Python Web开发的区别 – 金丝燕网  今天这篇文章谈一谈Java Web开发Python Web开发的区别。在这里我并不是鼓励大家从Java Web转向Python Web开发,我只是想说一下自己的感觉而已,...
  • Python Web项目(Python3.6.4+Django2.0)

    万次阅读 多人点赞 2018-02-01 18:19:17
    一、前言 Django是一个开放源代码的Web应用框架,由...由于我也是刚开始接触Python Web,不好给大家解释其中的区别,给大家推荐一片文章:浅谈MVC、MTV和MVVM,理解django框架中的MTV与MVC模式其中还有作者对MVVM的理
  • 二、贴近实战 本系列课程为练手项目实战:学生管理系统的开发项目包含了如下几个内容:项目的总体介绍、项目的数据库、连接数据库的类、实现学生信息的增删改查、项目总结及优化方案。课程具有极强的实战性。
  • python web开发——Django入门

    千次阅读 2017-12-23 13:57:23
    什么是DjangoDjango 是一个高层次的Python Web框架,鼓励快速开发和简洁实用的设计。由经验丰富的开发人员构建的,它处理了Web开发的许多麻烦,因此您可以专注于编写应用程序而无需重新创建轮子。它是免费和开放源码...
  • Python Web开发Python Web开发介绍为什么应该选择Python作为Web开发语言对于Web开发,有很多的编程语言可以选择,为什么应该选择Python呢?选择 Python 2 还是 Python 3Django 2.0 将不冉支持 Python 2Web框架介绍...
  • Python web开发框架

    千次阅读 2012-08-04 12:52:29
    浅谈Python web框架 Python, Web2.0 添加评论 一 252011 说到web framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework、framework不可胜数,不完全列表见:...
  • 如何学好python web开发

    千次阅读 2018-07-05 16:39:42
    我现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,不过兴趣终归还是要有的,还要自己动手去实践的。Web开发的途径有好多种,比如传统的.Net,还有很火爆的Java。 Python作为一种灵活好学的...
  • 一个初级python web后端开发工程师的面试总结

    万次阅读 多人点赞 2017-02-22 22:23:18
    然后目前是在寻找python后端开发这一块的工作,使用的框架为django;之前一直通过CSDN以及其他几家技术博客/论坛吸收大家的经验,在感激之余,也想输出点什么,造福大家,因此就有了这篇水文,希望大家能够多多吸取...
  • 之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web开发测试环境。 我使用的系统是:ubuntu 14.04 server,CentOS 参考我的最新记录:CentOS release 6.10 下 Python 3.7.5...
  • python开发本地WEB项目

    千次阅读 2018-10-19 11:15:03
    0. 基础 python版本 python-3.6.4 编辑器 pycharm-2018.2.4 ...虚拟环境是系统的一个位置,在开发web项目时,需要安装的所有python库都必须安装在该环境中。 创建( 通过CMD终端窗口实现 ) 1) ...
  • django的优缺点总结 - Python Web开发面试必备

    万次阅读 多人点赞 2018-06-20 21:39:03
    Django是利用Python语言从事Web开发的首选框架。如果你以后想从事python web开发工作,就必需了解其优缺点。这些都可能会是你将来的面试题哦。 Django的优点 功能完善、要素齐全:自带大量常用工具和框架...
  • Python web全栈开发到底有多高薪? 一、什么是Python web全栈工程师? 全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人。也叫全端工程师(同时具备前端和后台能力),英文Full Stack developer。 ...
  •     接上一文 python web开发笔记–MAC上Django+uwsgi构建总结,最近对于采用uwsgi进行成功部署自己的项目已经成功搞定,因此写下这篇博客,这绝对是一篇值得需要的人读的用心好博文,废话不多少,开始正题。...
  • 小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的第三讲,如果文中有基础知识不太熟悉的话,...
  • python flask web开发入门与项目实战

    千人学习 2019-12-15 19:02:04
            Web网站发展至今,特别是服务器... 综上所述,Flask 是一个用Python语言编写的Web微框架,可以让开发人员快速开发各种Web应用        课程预计每周更新两节
  • [python]python web开发系统架构

    千次阅读 2016-04-27 14:40:43
    Python Web开发的世界里框架横行,但是不论是Django、Webpy、Bottlepy还是Tornado他们在处理Web请求时都有着相同的处理机制,即都要遵循WSGI协议的标准。本文首先分析Python Web开发中常用系统架构,然后对WSGI...
  • python web开发框架比较

    千次阅读 2018-12-11 15:55:26
    python web开发框架,如Django、Flask、Tornado、Web2py等的比较。 名称 watch star fork commints branches releases contributors issues Django 2131 38171 16506 26395 ...
  • 大家好,我叫亓官劼(qí guān jié ),这个《小白都能看懂的实战教程 手把手教你Python Web全栈开发》是一个零基础的实战教程,手把手带你开发一套系统,带你了解Python web全栈开发,目前正在连续更新中,如果...
  • 由于Python的简洁 易读 强大 高效 现在Python应用在文件处理、网络编程、数据库编程、游戏、Web开发、数据分析、机器学习等各个领域。 就Web开发而言,为了提高开发效率,应运而生了很多框架,如Django、Flask、...
  • python Web项目服务器部署上线

    千次阅读 2019-02-12 12:16:50
    文章来源: ... 1.安装python3.6 1. 获取 wget https://www.python.org/ftp/python/3.6.2/...
  • 大家好,我叫亓官劼(qí guān jié ),这个《小白都能看懂的实战教程 手把手教你Python Web全栈开发》是一个零基础的实战教程,手把手带你开发一套系统,带你了解Python web全栈开发,目前正在连续更新中,如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 158,496
精华内容 63,398
关键字:

pythonweb项目开发

python 订阅