手把手教你写网站:Python WEB开发技术实战

news/2024/4/29 0:41:11/文章来源:https://blog.csdn.net/weixin_34357887/article/details/88859730

摘要:本文详细介绍了Python WEB开发的基础入门。以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程。通过本文的学习可以快速掌握基于Django的Python WEB的开发方法,进行WEB站点的实践开发。
数十款阿里云产品限时折扣中,赶紧点击这里,领劵开始云上实践吧!
演讲嘉宾简介:
韦玮,企业家,资深IT领域专家/讲师/作家,畅销书《精通Python网络爬虫》作者,阿里云社区技术专家。

本次直播视频精彩回顾,戳这里!
本节课代码及讲义下载,戳这里!

本次的分享主要围绕以下几个方面:

  1. Python WEB开发技术简介
  2. Django简介与环境配置与MVT设计模式简介
  3. 开发一个博客站点项目思路
  4. 路由编写与模型设计实战
  5. 快速开发一个网站后台与试图编写实战
  6. 模板设计与编写以及完善博客站点的其他功能
  7. 后续的话

一、Python WEB开发技术简介

WEB开发技术主要用于进行网站开发,大家可以使用Python进行网站的开发。进行网站开发最常用的语言是PHP,但Python作为一门比较通用的编程语言,它在WEB开发领域同样是比较适合的。在本文中将会向大家介绍如何使用Python进行WEB开发。在使用Python进行WEB开发时,可以使用不同的框架比如Django、Flask等,当然也可以不基于任何框架直接使用CGI编程进行站点开发。本文将与大家分享如何使用Django来进行WEB开发,Django是Python WEB开发中比较成熟的一个框架,足以应对大型项目的压力。

二、Django简介与环境配置与MVT设计模式简介

Django是一款用Python语言设计的比较优秀的WEB开发框架。在安装Django时,只需要在命令行下使用pip install django,并将django-admin.exe所在路径添加到环境变量中即可。安装完成后可以在命令行下直接运行django-admin命令,如果显示出一系列Django命令则表示Django的运行环境已经配置完成。如下图所示。

clipboard.png

接下来为大家展示如何利用Django创建一个空白的站点项目。在根目录下运行django-admin startproject ali即可在根目录创建一个名为ali的空白站点项目,在目录下可以看到一个空白站点的基本项目结构。通常一个网络站点会同时包含许多小站点,比如阿里云包含了云栖社区、云栖博客这样的子站点。在Django中,这样的子站点也称为APP。如何在一个站点下创建APP呢?首先,在命令行下进入站点项目。然后,使用python manage.py startapp home命令创建一个名为home的子站。接下来为大家介绍一下子站的结构,进入子站的目录,其中admin.py主要用于进行后台的配置。models.py主要用于模型设置,模型设置主要和数据库相关。views.py主要进行视图设置,在Django中,视图主要负责业务逻辑的处理,而前端页面的设计则放在模板中。

clipboard.png

Django是采用MVT的设计模式进行设计的。区别于MVC模式。MVC中,M指模型,V指视图(主要负责前端页面的处理),C指控制器(负责业务逻辑的处理),比如ThinkPHP采用的就是MVC架构。而在MVT架构中,M指模型,V指视图(负责业务逻辑处理),T指模板(负责前端界面)。因此,在进行实际开发时,应在视图中实现业务逻辑处理的程序,而前端应在模板中实现。

三、开发一个博客站点项目思路

博客站点案例的展示见视频。
在进行一个站点开发前,首先需要明确站点的功能。其次,设计站点的数据存储方式,即站点的模型。之后依次实现各个功能,并在实现过程中对页面进行设计。在设计过程中需要一些前端的知识。初次接触前端设计时,为了快速完成前端设计,可以利用一些前端框架。比如bootstrap,它提供了一个可视化布局系统,可以通过拖动组件的方式完成设计,并下载其前端源码。其界面如下图。

clipboard.png

四、路由编写与模型设计实战

路由,指网站的网址结构,即访问请求的分配。在Pycharm中打开站点项目。打开urls.py文件配置路由。首先,通过from home import views as home_views从home站点中导入视图并起别名为home_views。通过url(r’^admin/’, admin.site.urls)进行网址分配,第一个参数代表网址请求,第二个参数代表将访问请求引入哪一个视图函数中。通过路由编写可以对网址的结构进行规划。

clipboard.png

完成路由网址规划后,需要设计整个网站的数据存储结构,即数据模型。默认情况下会使用sqlite作为数据库。如果需要将mysql配置为数据库,可以在settings.py中修改DATABASES部分的代码。如下图。

clipboard.png

此案例中将使用sqllite作为数据库。模型的设计一般是根据数据的存储情况来进行分析的。首先要分析该站点需要存储什么信息。在此案例中,需要存储的信息包括用户信息、文章信息、类别信息、评论信息。每一种信息都可以用一张表来存储,并根据信息的属性设计表的字段。在设计表字段时应尽量考虑全面一些。本案例中的表设计如下图。

clipboard.png

在模型设计完成之后要将其转化为程序语言,模型的实现需在models.py中实现。每一张表都由一个python类实现,每个字段相当于是类中的变量。具体实现详见视频。每个字段需要有对应的存储类型,最常用的类型有CharField用于存储字符串,EmailField代表邮箱地址,IntegerField代表存储整型数据,BooleanField代表存储布尔型数据,TextField代表长文本类型。

五、快速开发一个网站后台与视图编写实战

模型设计完成之后再进行网站后台的开发。开发完网站后台后,才进入视图编写即功能实现环节。在Django目录结构中,每一个文件都有各自的分工。后台开发需要在admin.py中完成。首先需要在admin.py中注册之前设计的模型,即将模型绑定到后台中,这样就可以在后台中管理这些模型了。通过绑定,也提供了一个可视化的环境,避免了通过代码来控制数据库。接下里向大家讲解如何在后台中注册模型。首先,从models中导入各个模型。接着,将需要在后台中展现的信息利用list_display展示出来。以展现用户信息为例,list_display中不包含“passwd”,后台就看不到用户的密码。最后利用admin.site.register将信息真正绑定到后台,它有两个参数,第一个参数表示需要绑定的模型,第二个参数表示需要展现的信息。这样,后台就注册完毕了。

clipboard.png

下一步,创建一个后台账号。由于案例中使用了数据库,所以在创建超级管理员之前要先同步数据库,即利用python将模型同步成数据库,进入terminal终端,通过python manage.py makemigrations和python manage.py migrate命令来实现。之后再使用命令python manage.py createsuperuser创建超级管理员,如下图。之后就可以运行站点并登陆后台查看数据。

clipboard.png

接下来讲解视图的编写。视图编写是Django站点编写的核心。一般来说,每一个功能会以一个视图函数的形式实现,视图在views.py中编写。接下来将为大家一一介绍功能实现过程。第一,实现文章界面展示的功能。首先,需要获取文章的ID,并在网址中给出。因此要在路由中进行规划,并在article视图函数中,将ID设为参数。

clipboard.png

而视图函数要实现的功能就是要根据文章ID将文章查询出来,就需要用到模型。最常用的查询方式有以下两种,第一种,比如Article.objects.filter(id=aid).values(“id”, “title”, “author”, ”content”)。filter表示进行信息筛选,values表示要取出的字段。第二种, Typemsg.objects.values(“id”,”typename”)不进行信息筛选,直接取出字段。另外大家应掌握通过模型写入数据, Usermsg.objects.create(name=name, passwd=passwd, email = email)。在实现文章查找时,首先找到文章存储在Article表格中。在视图中导入Article模型,利用查询命令过滤ID取出文章相关信息。然后,使用render()为其分配一个模板。

clipboard.png

六、模板设计与编写以及完善博客站点的其他功能

接下来介绍模板的设计与编写及其他功能的完善。模板影响着界面的美观程度。首先,要在settings.py中开启TEMPLATES,在‘DIRS’中设置模板的路径。所有需要的前端模板都可以放在该文件目录下。比如,我们利用render为Article分配detail.html这个模板。进入detail.html进行编写。前端设计中需要动态变化的部分放在{{…}}中,表示Django中的变量。比如,利用thisarticle.title获取当前文章标题,thisarticle.author获取当前文章作者,thisarticle.content获取当前文章内容。值得注意的是{{thisarticle.content | safe}}通过safe源码解析,否则将直接在网页中展示HTML源码。

clipboard.png

注册功能
在views.py中实现业务逻辑处理。首先观察session.has_key,若查找到,说明用户已登陆无需注册,则直接重定向到根目录。否则进行注册,利用render为其分配reg.html。在reg.html中完成表单设计,点击提交后就将信息提交给当前页面。当前页面中,通过request.POST捕获信息,随后操作Usermsg模型,写入数据库。

clipboard.png

登陆功能
首先,需要login.html模板,输入姓名密码并提交。在视图中,首先判断当前是否登陆,若已登陆则重定向到根目录。否则返回登陆界面,捕获登陆信息,在模型中通过filter查找该条用户信息。若查到到该条记录则登陆成功并在session中保存当前用户名。否则登录失败。

clipboard.png

登出功能
只需通过del将会话信息删除即可。

首页展现
首页上动态变化的内容包括,博文和博文分类。在视图中调用模型获取博文分类和文章信息。然后进行切片运算。由于在首页上不可能完全展示数据库中的所有博文,因此要进行切片(通过[:20]取前二十个)。然后在模板中通过一个for循环遍历博文类别进行展示。文章同理。详细代码见视频。
博文列表页,实现方式与首页类似。只是不需要进行切片运算。

博文发布
要求用户登陆并有管理员权限。首先通过session.has_key 判断是否登陆,如果没登陆先跳转到登陆页面。若已登陆,则捕获当前用户信息并判断是否有管理员权限。若不是管理员则重定向到首页。若是管理员则展现文章发布的模板postarticles.html。在模板中首先设计表单。其次博文类别需要以单选按钮展示。在发布文章时就需要用到富文本编辑器。这里,用kindeditor作为富文本编辑器。donfig.js中设置何时打开富文本编辑器。案例中,我们要求textarea[name=”content”]时调用。然后只需要在输入文章内容处配置textarea将name字段设置为content再通过POST提交到views中,写入数据库。代码详见视频。

clipboard.png

clipboard.png

利用Django开发站点关键还在于多实践。

七、后续的话

阿里云Python技术直播,希望能帮助大家入门。希望大家在学习过程中也能学会自主解决问题比如查找资料。其次,项目导向是一种比较好的学习方式。可以给自己设立一个项目目标,在期间进行不断学习。前期轻理论重实战,后期轻实战重理论。

详情请阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_734765.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

drupal 电商网站_为什么小型企业应该为电子商务网站选择Drupal

drupal 电商网站As more and more developers are choosing to use CMS for developing websites, there has been a significant increase in interest for using CMS even for those sites that were not envisioned to built on these platforms. E-commerce sites are amon…

如何创建完美的网站

website design company that will create the perfect网站设计公司 ,将创造完美 website for your needs. They should offer you exquisite photographs and您需要的网站。 他们应该为您提供精美的照片, web copy designed with your unique business …

如何下载网站以供离线访问

In this tutorial I will teach you how to download website for offline access. 在本教程中,我将教您如何下载网站以供离线访问。 There are various reasons for which you want to access a website in offline mode. Like if you are a web designer then yo…

静态和动态网站之间的区别

Here you will learn about difference between static and dynamic websites i.e static vs dynamic web pages. 在这里,您将了解静态和动态网站之间的区别,即静态和动态网页。 We know there are many types of websites, but on a basic scale they …

4个免费的ASP.NET托管网站

Here you will know about some best and free asp.net hosting websites. 在这里,您将了解一些最佳和免费的asp.net托管网站。 Are you a student or developer? Do you have ASP.NET website? Want to test your ASP.NET project online? Want to host ASP.Ne…

如何使用Android Studio将网站转换为Android App

In this tutorial you will learn how to convert website to android app using Android Studio. 在本教程中,您将学习如何使用Android Studio将网站转换为android应用。 Before reading this tutorial I hope that you already have basic knowledge of Android …

改善网站安全性的5种方法

Here you will know about some important website security tips. 在这里,您将了解一些重要的网站安全提示。 Owning a website is similar in a lot of ways to owning a brick-and-mortar store. It serves to promote and advertise your products and service…

手机访客获得访客手机号_每个新访客都希望从您的网站获得的7件事

手机访客获得访客手机号It is all but essential to have a website for your business in this day and age. As the first port of call for any newcomer to your brand, it needs to offer key information about your services and direct people on how to use them. Bey…

移动2018年年报 下载_2018年让网站具有移动响应能力至关重要的7个原因

移动2018年年报 下载The only thing more important than having a website is making it easily accessible to everyone. In 2018, people of all generations regularly use multiple devices. Once you’ve covered the website basics, it’s time to make sure that your…

seo传智播客2018_2018年最重要的4个SEO因素

seo传智播客2018SEO is always changing. It’s hard to keep up with the new rules and strategies for boosting your search engine ranking. In 2018, optimizing your website for Google and other search engines is no longer optional. With so much competition onl…

去过印度的人评价印度_印度5个最佳自由职业网站

去过印度的人评价印度Here you will get to know about some best freelancing sites in India. 在这里,您将了解印度一些最佳的自由职业者网站。 In the 21st century we do not really need to hard work in order to earn great, all we need is a great amount…

ux设计_为您的企业网站制作最佳UX设计的3条技巧

ux设计In the online world, the saying “never judge a book by its cover” does not apply. The visual things you post online will make or break your online presence. It’s no longer possible to satisfy a basic website visitor just by adding few elements on …

大数据开发要学哪种编程语言_编程语言技术:您应该使用哪一个来开发您的企业网站?

大数据开发要学哪种编程语言It is now easy for every business to have a website thanks to rapid advancements in web technologies. For a successful website strategy, you need to lay the right foundation which will be perfected by continuous maintenance and up…

如何将自定义JavaScript添加到您的WordPress网站?

When you want to change the theme of your site, one thing that needs to be done is to add custom JavaScript to it. However, there are other options available if you do not want to add it to your site. For instance, simply add the ‘Heat and Footer Script’…

创建类的三个步骤_如何通过5个简单的步骤创建企业网站

创建类的三个步骤Having the right business website can help any business alter their fortunes. If you are a small or big business owner, CEO, or entrepreneur, looking to grow your business, then it is important that you focus on your website. 拥有合适的企业…

网页和网站之间的区别

The difference between webpage and website is unanimously erred in terms of their functionalities, and often when anyone reads these two terms starting with “Web.” 网页和网站之间的区别在功能上是一致的,而且通常是当有人阅读以“ Web”开头的这两个…

ue4 加快移动_加快移动网站的9种方法

ue4 加快移动Website speed refers to how fast a site responds to requests from the Web. As I am about to highlight in this article, the speed with which a website load is very critical to both the users and owners. 网站速度是指网站响应Web请求的速度。 正如我…

有时候有些服务类的网站就是不走心啊

http://www.gb688.cn/BzptWeb/appmanager/eip/main?_nfpbtrue&_pageLabelportal_main_portal_page_4#wlp_portal_main_portal_page_4 请看: 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言、评论转载于:https://www.cnblogs.co…

基于django的个人博客网站建立(七)

基于django的个人博客网站建立&#xff08;七&#xff09; 前言 网站效果可点击这里访问 这次在原来的基础上添加或修改一些小功能 具体内容 1.代码高亮 在原来的blog-details.html页面添加下面的代码&#xff1a; <link href"http://cdn.bootcss.com/highlight.js/9.1…

优酷网站服务器的带宽是多少,云服务器1M的带宽到底多大?90%的网站够用了

1M&#xff0c;作为云服务器最低的带宽配置&#xff0c;到底能承受多大的流量&#xff1f;在选配云服务器带宽的时候&#xff0c;看到带宽大小的时候&#xff0c;头疼病总是发作&#xff0c;带宽买小了&#xff0c;网站太卡&#xff0c;用户体验不好影响业务&#xff0c;带宽买…