你的第一个网站

news/2024/5/9 14:29:38/文章来源:https://blog.csdn.net/weixin_30666401/article/details/99612167

 

现在的你,看完了我的上一篇博客,我相信你已经学会了如何安装软件包以及如何创建骨架项目目录。

现在的我,将教你创建你的第一个网站。

 

安装的软件包是lpthw.web,这是你要安装的"Web框架"。

在命令符中安装,输入pip install lpthw.web,很显然,在上一篇我给你解释了pip的强大。

安装完成之后,其实是不能立即使用的,我们得考虑到版本问题,你现在就去py文件里输入import web,得到的结果无疑是报错。

我现在使用的是python 3.7版本,我得将web的版本配置一下:

继续在命令符输入pip install web.py==0.40.dev0

现在我们的python3.7可以使用web模块了。

 

下一步想必不用我多说描述了吧,就是复制我们上篇博客创建的项目骨架模板,然后进行修改:

gothonweb是我们代码的主体目录;templates是用来存放html代码的,对网页进行操作。tests是自动化测试。

gothonweb、tests这两个文件夹里都要创建一个__init__.py,没错,和我上篇博客写的方法一模一样。

 

现在我们来创建一个最基本的lpthw.web的应用程序,测试一下8080网络端口是否可用,在bin文件夹下创建一个app.py:

import web

urls=(
    '/',"index"
)

app=web.application(urls,globals())

class index(object):
    def GET(self):
        greeting="Hello HuangPaoPao"
        return render.index(greeting = greeting)

if __name__=="__main__":
app.run()

然后我们直接运行这个app.py文件,如果没问题的话,你应该看见这样的结果:

接下来就是打开你的浏览器,输入localhost:8080/,你应该会看见这样的界面:

到现在,我都还没讲到任何Web相关的工作原理。确保你已经成功运行出来并从你的浏览器得到这样的结果,我将讲解相关的工作原理。

1.浏览器通过网络连接到你的电脑,它的名字叫做localhost,这是一个标准的称谓,代表你这台计算机,不管你给它取名叫啥。它使用的网络端口是8080。

2.连接成功之后,浏览器对app.py这个应用程序发出了HTTP请求,要求访问URL,这是网站的第一个URL。

3.在app.py里面,有一个urls元组,就定义了'/'和'index'的匹配关系,意思是这样的:如果有人用/访问这个浏览器,lpthw.web将会找到class index,

从而用它处理这个浏览器的请求,完成操作。所以我们用 localhost:8080/ 来访问,后面有一个/ 。

4.现在lpthw.web找到了class index,然后针对这个类的一个实例调用了index.GET,返回了"Hello HuangPaoPao"这样的字符串,再传递给浏览器。

5.最后,lpthw.web完成了对于浏览器请求的处理,将响应(response)回传给浏览器,于是你就看到了你的浏览器打印出了Hello HuangPaoPao。

 

 确保你弄懂了以上的工作原理,现在我们对浏览器进一步的html处理,就是给它改变一下字体的大小和颜色,以及网页的名字。

这个时候,我们就用上了templates文件夹,我说过,这是存放html文件的地方。

于是在templates文件夹里创建一个index.html文件:

$def with (greeting)

<html>

    <head>

        <title>Gothons Of Planet Percal #25</title>

    </head>

<body>

 

$if greeting:

    I just wanted to say <em style="color: green; font-size: 2em;">$greeting </em>.

$else:

    <em>Hello</em>, world!

 

</body>

</html>

 

注意,html也有四个空格的敏感缩进。你如果没学html的话,就大概浏览一下代码即可,说实话,我也没学过html。

现在我们配置好了index.html,我们现在就要修改app.py代码,让它对接html的功能:

如果你是直接用python直接编写代码,请看下列代码:

import web

 

urls=(

    '/',"index"

)

 

app=web.application(urls,globals())

 

render=web.template.render('templates/')  

 

class index(object):

    def GET(self):

        greeting="Hello HuangPaoPao"

        return render.index(greeting = greeting)

 

if __name__=="__main__":

    app.run()

如果你是第三方编译平台,比如vs code,pycharm等,如果运行上列代码报错,请看下列代码:

import web

 

import os

root = os.path.dirname(__file__)  #找到本文件的目录路径,存到root变量。

 

urls=(

    '/hello',"index"          #

)

 

app=web.application(urls,globals())

# render=web.template.render('templates/')  

#老是报错No template named index,说是找不到index,估计是我用第三方编辑器,Python找错目录了。

 

render = web.template.render(os.path.join(root, '..', 'templates/'))

#os.path.join是把目录和文件名合成一个路径。可以理解为直接定位正确目录找到templates文件夹。

 

class index(object):

    def GET(self):

        greeting="Hello HuangPaoPao"

        return render.index(greeting = greeting)   #引用index.html的功能

 

if __name__=="__main__":

    app.run()

原因我已经在上列的代码注释里面写出来了,第三方编译代码的平台估计是影响python找对正确的目录,于是引用了os模块,

让os模块的功能直接定位正确的目录,并成功运行代码。

接下来还是一样的,直接运行这个修改后的app.py:

这时候,你只需要刷新一下浏览器:

你可以看见,在html的作用下,网页的名字改成了:Gothons Of Planet Percal #25

字体的颜色改成了绿色,字体的格式变成了斜体。

 官方解释:网页模板被渲染成了标准有效的HTML源代码。

render=web.template.render('templates/') 

render可以说是一个魔法函数,它看到了你需要的是index.html,于是跑到了templates/目录下找到名字为index.html的文件,然后完成渲染转换。

 

虽然能让浏览器显示你的消息是很有趣的事情,但是如果能让用户通过表单提交文本就更有趣了。

所以我们就要建立一个html文件,这个文件显示你输入的窗口。

在templates文件夹里创建一个hello_form.html:

<html>
    <head>
        <title>Sample Web Form</title>
    </head>
<body>

<h1>Fill Out This Form</h1>

<form action="/hello" method="POST">
   Your Name: <input type="text" name="name">
    <br/>
    A greeti: <input type="text" name="greet">
    <br/>
    <input type="submit">
</form>
  
</body>
</html>

我们先来提前预览以下这个文件的效果(代码还没有打完):

我们可以注意到,这个html文件已经很好地创建了用户输入的窗口,但是从代码部分我们来分析研究:

name、greet是两个需要输入数据的变量。

method指向了POST函数,所以要改变GET的作用,让GET负责打印这个输入窗口的页面,POST负责输入数据后的操作。

所以这个时候,大家都知道怎么修改app.py了:

import web

import os
root = os.path.dirname(__file__) #找到本文件的目录路径,存到root变量。

urls=(
'/hello',"index"      #这儿将‘/’改成‘/hello’,访问网站时就是localhost:8080/hello
)

app=web.application(urls,globals())
# render=web.template.render('templates/')
#老是报错No template named index,说是找不到index,估计是我用第三方编辑器,Python找错目录了。

render = web.template.render(os.path.join(root, '..', 'templates/'))
#os.path.join是把目录和文件名合成一个路径。可以理解为直接定位正确目录找到templates文件夹。


class index(object):
def GET(self):
return render.hello_form()   #改变GET的作用,改成打印输入窗口的html
def POST(self):                          #因为html文件中method指向了POST,故输入数据后的操作让POST函数负责。
form=web.input(name="Nobydy",greet="Hi")      #创建需要输入数据的变量。此时为默认变量。
greeting="Hello ,%s,%s"%(form.name,form.greet)
return render.index(greeting = greeting)


if __name__=="__main__":
app.run()
以上全部完成之后,继续在终端运行app.py:

 

输出结果:

 

 

转载于:https://www.cnblogs.com/Masterpaopao/p/10140687.html

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

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

相关文章

移动电子商务网站可用性-首页和导航

转载说明&#xff1a;Get Elastic是关注于电子商务的设计网站&#xff0c;访问速度有点慢&#xff0c;有些经典文章转载到这里&#xff0c;方便查阅原文链接: http://www.getelastic.com/mobile-home-page-navigation/While most retailers have enough challenge optimizing f…

移动电子商务网站可用性-搜索结果和分类页

原文链接: http://www.getelastic.com/mobile-search-category-pages/This is the second installment of a 4 part series on mobile commerce design and usability: Part 1: Home Pages and Navigation Part 2: Search and Category Pages Part 3: Product Pages and Cart S…

移动电子商务网站可用性-商品页面和购物车

原文链接&#xff1a; http://www.getelastic.com/mobile-commerce-usability-product-pages-and-cart-summary/This is the third installment of a 4 part series on mobile commerce design and usability: Part 1: Home Pages and Navigation Part 2: Search and Category …

移动电子商务网站可用性-表单和支付流程

原文链接&#xff1a; http://www.getelastic.com/mobile-forms-checkout/This is the final installment of a 4 part series on mobile commerce design and usability… Part 1: Home Pages and Navigation Part 2: Search and Category Pages Part 3: Product Pages and Ca…

页面设计:响应式设计电子商务网站案例学习

响应式设计技术已经比3年前更加成熟而且有了更多的设计、测试工具和设计框架和样式。 不过这些设计大部分用在一些阅读、Blog、简单门户网站中&#xff0c;在电子商务领域少有涉及。 国内大中型电子商务网站基本上没有使用响应式设计的技术。 不过&#xff0c;今天看到一个国外…

3个优秀响应式设计网站推荐:电子商务、主题活动、科技资讯

分享3个设计简洁优雅、配色干净利落、技术细腻的响应式设计网站&#xff1a; Cloggs&#xff0c;电子商务类 https://www.cloggs.co.uk/&#xff0c;移动端为其带来30%的流量增长。Canvas大会&#xff0c;主题页面 http://2013.canvasconf.co.uk/&#xff0c;蓝宝石背景风格&am…

手机端整张显示出来_手机网站建设要遵循的原则

随着移动互联网的发展&#xff0c;通过手机来浏览网站的用户越来越多了&#xff0c;而且移动互联网的应用也越来越广泛&#xff0c;因此手机网站对企业的发展有很重要的影响。因为手机网站可以让用户随时随地浏览网站&#xff0c;那么企业做手机网站要注意些什么呢&#xff1f;…

tab切换效果 网站中的图片自动切换

网站中的图片自动切换 今天上一套tab切换效果的代码 动图就自己实现吧&#xff01; 下面贴HTML代码&#xff0c;大体分两部分&#xff0c;图片div和按钮div&#xff0c;代码很容易看懂~ <!DOCTYPE html> <html> <head><meta charset"utf-8"/>…

商城网站应该怎么挑选服务器,网上商城开发的服务器该怎么选择?

网上商城开发的服务器该怎么选择呢&#xff1f;今天小编就来分享一下。1、网上商城开发服务器的功能是否完善不同类型的网上商城开发选择服务器会有所不同&#xff0c;这对网上商城开发来说&#xff0c;也是会出现很多优势的。当然&#xff0c;这些取决于服务器功能越完善越好&…

爬取Ajax动态加载和翻页时url不变的网页+网站案例

最近在爬取一个网页的时候&#xff0c;遇到了需要对对多页表格的爬取&#xff0c;但是在对表格进行翻页的时候&#xff0c;url的地址并不会改变&#xff0c;而且网页的源代码中只有当前加载页出现的表格内容&#xff0c;并没有其余页所对应的<a href >的内容&#xff0c…

教资照片上传显示内部服务器错误,教师资格证笔试报名时,网站问题如何解决?...

最近今天是教师资格证报名的日子&#xff0c;很多要报名的同学都守在电脑前报名或查看自己报名后的审核状态&#xff0c;在进行教师资格证报名中&#xff0c;很多考生也遇到了这样或那样的问题&#xff0c;今天小编主要来给大家讲一下遇到网站上的问题&#xff0c;我们应该怎么…

炫领代挂服务器地理位置,炫领代挂官方网站

《 炫领代挂如何用,我置于这儿它会自己升吗,求高手解》 …… 会《 炫领app下载》 …… 苹果相机直接在app store里面下载或则在itunes里面下就可以了.安卓相机去应用商场搜索名子下载,比如百度手机助手,应用宝等.也可以百度搜索炫领代挂下载的.《 521代挂系统跟炫领代挂那个比较…

【免费】如何轻松的从音乐网站下载自己喜欢的mp3音乐?

如何轻松的从音乐网站下载自己喜欢的mp3音乐&#xff1f; 一般人我不告诉他&#xff0c;哈哈 首先&#xff0c;拿一个不知名的音乐网站开刀——九酷音乐&#xff08;http://www.9ku.com/&#xff09;。 打开官网首页&#xff1a; 找一首自己喜欢的音乐&#xff0c;比如少年&…

站点地图html格式,sitemap.xml 和sitemap.html两种网站地图格式的区别

网站地图是我们的网站站长所称的网站地图&#xff0c;其中包含并列出了网站中几乎所有的URL&#xff0c;以便搜索引擎可以更轻松&#xff0c;更快速地抓取并找到指向网站的链接&#xff0c;从而提高搜索引擎的抓取效率。 实际上&#xff0c;我们有两种最常见的站点地图文件格式…

【服务器架构】十张图带你了解大型网站架构

参考文章&#xff1a;【服务器架构】十张图带你了解大型网站架构 说道大型网站&#xff0c;就的先说大型网站的特点&#xff1a;高并发&#xff0c;大流量&#xff0c;高可用&#xff0c;海量数据等。下面就说说大型网站的架构演化过程吧。 1、初始阶段的网站架构 初始阶段都比…

用gogs搭建属于自己的git网站

参考文章&#xff1a;用gogs搭建属于自己的git网站 如果你对docker的操作不太了解, 建议先阅读 从零搭建docker私有仓库gogs是一款极易搭建的自助 Git 服务, 掌握了它, 我们就可以搭建自己的git服务站点gogs官网: https://gogs.io/, github中文地址:https://github.com/gogs/go…

《大型分布式网站架构设计与实践》——常见的Web攻击手段

常见的Web攻击手段 XSS攻击 跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;&#xff0c;指的是攻击者在网页中嵌入恶意脚本程序&#xff0c;当用户打开该网页时&#xff0c;脚本程序便开始在客户端的浏览器上执行&#xff0c;以盗取客户端cookie、用户名密码&…

《大型网站技术架构:核心原理与案例分析》——大型网站架构演化过程

大型网站软件系统的特点 高并发&#xff0c;大流量高可用海量数据用户分布广泛&#xff0c;网络情况复杂安全环境恶劣需求快速变更&#xff0c;发布频繁渐进式发展 大型网站架构演化发展历程 初始阶段的网站架构 LinuxPHPApacheMySQL 应用服务和数据服务分离 演化原因 一…

用户行为分析大数据系统(实时统计每个分类被点击的次数,实时计算商品销售额,统计网站PV、UV )

Spark Streaming实战对论坛网站动态行为pv&#xff0c;uv&#xff0c;注册人数&#xff0c;跳出率的多维度分析_小强签名设计 的博客-CSDN博客_spark streaming uv 实时统计每天pv,uv的sparkStreaming结合redis结果存入mysql供前端展示 实时统计每天pv,uv的sparkStreaming结合…

机器学习(三)-- KNN(K近邻分类算法)、电影分类、改进约会网站的配对效果

决策树< 朴素贝叶斯< KNN K近邻算法&#xff1a;根据距离来做排序&#xff0c;距离哪些同类的数据比较近则属于哪一类 &#xff08;1&#xff09;从计算结果直观上来看&#xff0c;在这三种算法中&#xff0c;KNN算法的计算准确率普遍较高&#xff0c;且kNN算法在训练数…