任务
做出一个随机生成身份证码的网页
前期准备
- 黑马程序员入门视频(表单之前即可完成任务)
- flask官方中文手册
- flask官方英文手册
- pycharm3专业版
- 在终端上生成身份证的代码
安装flask
pip install Flask
在命令行上输完这条命令就可以开心地开始用py啦~(话说我不知道如果不输这条命令会有什么样的结果诶)
各文件夹里的内容
template_folder:模板所在文件夹的名字
此任务只需用到这个文件夹即可,在templates文件夹里创建html类型,html上的内容会显示在页面上
而py类型的文件是单独存放的
root_path:可以不用填,会自动找到,当前执行文件,所在目录地址
在return render_template时会将上面两个进行拼接,找到对应的模板地址
static_folder:静态文件所在文件的名字,默认是static,可以不用填
static_url_path:静态文件的地址前缀,写成什么,访问静态文件时,就要在前面加上这个
app = Flask(__name__,template_folder='templates',static_url_path='/xxxxxx')
如:在根目录下创建目录,templates和static,则return render_template时,可以找到里面的模板页面;如在static文件夹里存放11.png,在引用该图片时,静态文件地址为:/xxxxxx/11.png
基本操作
放在每个函数最前面,/是指路径,get是获得网页内容,post是向网页进行推送,方法可按需选择
@app.route('/', methods=['GET', 'POST'])#py文件里面的内容
需要导入的文件
from flask import Flask, render_template, flash, request
获取用户输入的参数:
if request.method == 'POST': #py文件里面的内容
# 获取参数 year month day
year = request.form.get('year')
month = request.form.get('month')
date = request.form.get('date')
此时html里相关部分的内容:
<form method="post">
<label>出生年份:</label><input type="text"name="year"><br><br>
<label>出生月份:</label><input type="text"name="month"><br><br>
<label>出生日期:</label><input type="text"name="date"><br><br>
<input type="submit"value="提交"><br>
</form>
py里面get的变量名必须和html的name相同
上述内容的简单解释
form
form是显示出来的表格
html的/form是指form结束的意思
注释
py的注释为#
html的注释为
变量(后面会有相关的代码和更详细的解释,现在看不懂也没关系)
html中的
{{}}
```
是变量模块,可在p y里面用return()将python里的变量输入到html中的变量然后显示出来,html中得到的变量可通过在py中用requet. form.get()传给python
##### 关于导入的文件
> render_template: 有了这个文件才能在python和html中传输变量
>
> flash:后面会用到的,作用大概是将py里面想要传送到页面上的语句通过html文件里的
>
> get_flashed_messages()捕捉到,然后在页面上显示出来 ,此操作需设置app.secret_key= 进行加密
>
> request:python通过request请求得到用户在网页上输入的类型
##### html里面的基本格式说明
> * < br > 换行
> * label里面是在页面山会显示出来的内容
> * type属性如下表
>
> 属性值
>
> | 值 | 描述 |
> | -------- | ------------------------------------------------------------ |
> | button | 定义可点击按钮(多数情况下,用于通过 JavaScript 启动脚本)。 |
> | checkbox | 定义复选框。 |
> | file | 定义输入字段和 "浏览"按钮,供文件上传。 |
> | hidden | 定义隐藏的输入字段。 |
> | image | 定义图像形式的提交按钮。 |
> | password | 定义密码字段。该字段中的字符被掩码。 |
> | radio | 定义单选按钮。 |
> | reset | 定义重置按钮。重置按钮会清除表单中的所有数据。 |
> | submit | 定义提交按钮。提交按钮会把表单数据发送到服务器。 |
> | text | 定义单行的输入字段,用户可在其中输入文本。默认宽度为 20 个字符。 |
----
省略python里随机生成身份证部分的代码
下面是判断参数的代码:
```python
# 判断请求方式
if request.method == 'POST':
# 获取参数 year month day
year = request.form.get('year')
month = request.form.get('month')
date = request.form.get('date')
# 判断参数是否完整
if not all([year, month, date]):
flash(u'请将您的资料填写完整')
# 判断输入是否符合要求
else:
#将str转换成int,text类型里面得到的是字符
year = int(year)
month = int(month)
date = int(date)
if(year < 999 or year > 2018 )or(date < 0 or date > 31 )or(month <1 or month> 12):
flash(u'资料错误')
```
html:
```html
{# 使用便利获取年月日的闪现消息 #}
{% for message in get_flashed_messages() %}
{{message}}
{% endfor %}
1>
上述内容的简单解释
{% %}
是html中的控制模块,由于message是变量,则需要
变量模块;get_flashed_messages()是个函数,必须要加(),否则会报错
py里面的u’ ‘
对里面的字符进行转码以使他正确输出,否则有可能会编码错乱导致报错
最后一部分的讲解:return
return render_template('success.html', listID=listID)
返回success.html文件,并将list ID传给success.html(list ID可以是list数组,也可以是 int变量等任何变量,但是必须和文件里变量名相同,前一个list ID是success.html文件里的变量名,后一个是py里的变量名。
基础知识的讲解就到此完毕啦!!!撒花!
总结
如果看了这篇文章之后还云里雾里的话,强烈推荐先去看黑马程序员里面的视频再回来看这篇文章哟,并且可以在这个程序里面加入表单等操作来更装逼一点~~对了,如果页面不能正确显示报错的话心态不要爆炸,请回到py里面看error(error get下面的部分)出现在哪里以进行修改哦注意缩进,(),大小写等错误