一个随机生成身份证码的网页

任务

做出一个随机生成身份证码的网页


前期准备

  1. 黑马程序员入门视频(表单之前即可完成任务)
  2. flask官方中文手册
  3. flask官方英文手册
  4. pycharm3专业版
  5. 在终端上生成身份证的代码

安装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 %}

上述内容的简单解释

{% %}

是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下面的部分)出现在哪里以进行修改哦注意缩进,(),大小写等错误


上一篇
archlinux基础安装步骤 archlinux基础安装步骤
使用虚拟机安装archlinux的步骤简单介绍,一下都是legacy启动模式 参考资料 ArchWiki,根据上面指令即可完成安装 在 VirtualBox 里安装 Arch Linux 操作系统 linux下(fdisk,gdisk,p
2018-11-18
下一篇
一些关于c的小技巧和基础知识 一些关于c的小技巧和基础知识
c的小技巧和基础知识 基础知识1. 十进制的ASCII码 0~9数字对应十进制48-57 a~z字母对应的十进制 十六进制61-7A A~Z字母对应的十进制65-90 十六进制41-5A 汉语的ASCII码与英文
2018-11-14
目录