本小白一直没学过网页语言,研一才开始接触python,现在导师让制作个简单的网页,我也是用了些时间才搞明白。里面若有问题或错误的,请留言!!!
我就直接说我是怎么做的吧,首先是创建文件夹,把你需要做的网页文件都放在一个文件夹里。文件夹的大致内容如下。
就这三个东东,因为我们做的网页非常简单,所以不需要那么多的花里胡哨。static文件夹里面是存放图片用的,templates文件夹是用来存放HTML文件的。web.py就是主程序。我们先来写一个简单的搜索网页。其中html文件的内容如下:
Title搜索:
其实我们不太用全懂html语言,只要知道个差不多就行,毕竟不是专门做网页的,能实现我们简单的需求即可。上面这段代码是生成了一个搜索文本框。具体我就不讲了,因为我也不是很清楚哈哈。然后写我们的主程序代码:
from flask import Flask,render_template,request
import pymysql
app = Flask(__name__)
@app.route('/')
def index():
return render_template('base.html')
if __name__ == '__main__':
app.run(debug=True,host='127.0.0.1',port='8080')
这个base.html文件就是刚才我们写的,放在templates文件夹下。运行后就会出现一个网址,点击进入,如图:
其实到这一步很简单,可是我到这一步都花了半天时间。然后又开始琢磨如何连接MySQL数据库,又是过了两天......着实菜......
flask连接数据库很简单,就和python连接数据库是一样的,不用额外乱七八糟什么的,我们需要做的就是如何将读取出来的数据展示在网页上。那么我们就需要做两件事,html语言如何获取这些变量值,python如何将这些变量值传入html文件。先看另一个html文件,代码如下:
搜索结果展示搜索结果展示
id | 姓名 | 年龄 | 城市 |
---|
{% for i in items %}
{{ i.id }}{{ i.name }}{{ i.age }}{{ i.city }}{% endfor %}
这段代码的意思就是将数据库中的信息打印在网页上。此时我的主程序代码加入了另外一个函数:
from flask import Flask,render_template,request
import pymysql
app = Flask(__name__)
@app.route('/')
def index():
return render_template('base.html')
@app.route('/gets/',methods=['POST'])
def search():
conn = pymysql.connect(user='root', host='localhost', passwd='', db='test',cursorclass=pymysql.cursors.DictCursor)
cur = conn.cursor()
sql = "select * from database1"
cur.execute(sql)
datas = cur.fetchall()
return render_template('search.html',items=datas)
if __name__ == '__main__':
app.run(debug=True,host='127.0.0.1',port='8080')
多了一个@app.route('/gets/',methods=['POST'])还有下面的search()函数,当然我们还没做到搜索功能,这只是将MySQL数据库中的信息打印在网页上。
@app.route('/gets/',methods=['POST'])这一行是怎么写出来的呢,这个gets是base.html文件里定义的,
这大概意思应该就是gets得到响应后,才执行search()函数。
数据库连接的时候,记住一定要写上cursorclass=pymysql.cursors.DictCursor) 不然网页显示不出来我们的数据,我在这搞了半天。哎。
下面的语句应该不用解释了,最后返回的是search.html刚才的搜索结果页面,还有需要显示出来的datas,这里的items是search.html文件里定义的,
for i in items 很明显就是遍历我们得到的数据了。现在再次运行我们的主程序,一开始页面就是我们第一次的页面,然后点击搜索,就会出现如下:
好了,到这我们基本知道了如何将数据库的信息展示到网页上了。那么搜索功能的话就是让它删选出符合条件的数据。比如,我想删选出姓名中含有“江”字的数据,那就应该在search()函数中加入删选条件,如下
def search():
conn = pymysql.connect(user='root', host='localhost', passwd='', db='test',cursorclass=pymysql.cursors.DictCursor)
cur = conn.cursor()
S = request.values.get('question')
sql = "select * from database1 where name like '%"+S+"%'"
cur.execute(sql)
datas = cur.fetchall()
return render_template('search.html',items=datas)
上面的search()函数经过了修改,加入了S = request.values.get('question')这行代码,它的功能就是得到输入框的信息,后面的参数‘question’在base.html文件里定义的:
sql语句的意思就是将包含输入框信息S的内容找出来。其他地方没改。此时我们再次运行,并在输入框中输入‘江’,然后回车,看到如下结果:
把姓名中包含‘江’字的全都找出来了。哈哈哈。
至于什么全文搜素啊,我也没看,毕竟也用不到那么复杂的,如果以后接触了再写。
虽然很简单吧,但自己以前没接触过,开始着实让人头疼。希望别人走的弯路少些。自己也记得劳些。