期末作业

1.个人学习总结

 

 

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。在一学期时间内学习并实现基于PythonFlask框架web建设项目下面简单分享一下我个人学习python语言后的一些心得和经验。

刚开始接触python的时候,这个语言给我的第一感觉就是简洁,过去我们接触的比较多的编程语言是JavaJava是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程当然过去我的java并没有学得很好 ,也只是略懂 皮毛 ,一个是因为专业要求不高 ,另一个学习这个语言还是有一定难度,但自从接触python,我发现好像发掘了自己对编程的兴趣,当然这归功于python易上手程度,python是现在主流的编程语言之一 ,他可以 用来干很多事情,这个学期我们暂时只学习网页制作,但这已经不能满足我对这个语言的好奇心,已经迫不及待想学好它,应用到 更多地方。在这里我想分享一下过去pythonjava的不同点。

 

  1. PythonJava简单,学习成本低,开发效率高
    2.Java是一种静态类型语言,Python是一种动态类型语言
    3.Java中的所有变量需要先声明(类型)才能使用,Python中的变量不需要声明类型
    4.Java编译以后才能运行,Python直接就可以运行;
    5.JAVA 里的块用大括号对包括,Python 以冒号 + 四个空格缩进表示。
    6.JAVA 的类型要声明,Python 的类型不需要。
    7.JAVA 每行语句以分号结束,Python 可以不写分号。
    8.实现同一功能时,JAVA 要敲的键盘次数一般要比 Python 多。

 

     这学期,我们学习在老师的带领下,我们学习了Python+Flask+MysqLweb建设一开始觉得 这个很有趣,因为一直来都是浏览 别人的网页,现在终于有机会去制作 自己的网页了,一开始接触htmlcss,感觉还是有点繁琐,但慢慢的习惯了,而且还觉得很有趣。

我知道我现在学习的东西只是皮毛中的皮毛,日后肯定会遇到 很多困难,但是编程的路上 本来 就会遇到各种问题,但是克服这些困难的过程无疑也会给我带来更多的成长。最后也希望自己能一直坚持下去,在 学习python的路上越走越远。

 

 

2. Python+Flask+MysqLweb建设

 1、使用工具

主要工具有:pycharm64.exe + Python 3.6 64-bit + MySQL + Navicat for MySQL(辅助工具)

2、完成基本的页面设计

3、涉及到的第三方库和Flask & 概览

Flask

Flaskhello world应用非常的简单,仅仅单个Python文件的7行代码就够了。

# from http://flask.pocoo.org/ tutorial

from flask import Flask

app = Flask(__name__)

@app.route("/") # take note of this decorator syntax, it's a common pattern

def hello():

    return "Hello World!"

if __name__ == "__main__":

app.run()

 

4、加载静态文件,父模板与其他界面的继承

1.登陆用url_for加载静态文件

  1.<script src="{{ url_for('static',filename='js/login.js') }}"></script>

  2.flask static文件夹开始寻找

  3.可用于加载css, js, image文件

2.继承和扩展

  1.把一些公共的代码放在父模板中,避免每个模板写同样的内容。base.html

  2.子模板继承父模板

      1.{% extends 'base.html’ %}

3.父模板提前定义好子模板可以实现一些自己需求的位置及名称。block

  1.<title>{% block title %}{% endblock %}-MIS问答平台</title>

  2.{% block head %}{% endblock %}

  3.{% block main %}{% endblock %}

4.子模板中写代码实现自己的需求。block

    1.{% block title %}登录{% endblock %}

 

5、数据库连接池

运用工具:MySQL + Navicat for MySQL(辅助工具)

1.安装与配置python3.6+flask+mysql数据库

  1.下载安装MySQL数据库

  2.下载安装MySQL-python 中间件(pip install flask-sqlalchemy PythonORM框架SQLAlchemy))

2.mysql创建数据库

3.数据库配置信息config.py

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@localhost:3306/zhuce?charset=utf8'

SQLALCHEMY_TRACK_MODIFICATIONS = False

 

6通过用户模型,对数据库进行增删改查

from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyimport config

 

app = Flask(__name__)

app.config.from_object(config)

 

db=SQLAlchemy(app)

class User(db.Model):

    __tablename__ = 'User'

    id = db.Column(db.Integer,primary_key=True,autoincrement=True)

    username = db.Column(db.String(20),nullable=False)

    password = db.Column(db.String(20),nullable=False)

    nickname = db.Column(db.String(20))#db.create_all()

#

user=User(username='liu1234',password='123456789')

db.session.add(user)

db.session.commit()#

user=User.query.filter(User.username=='two1234').first() user.password='12345678910'

db.session.delete(user)

db.session.commit()#

user=User.query.filter(User.username=='two1234').first()

user.username='three1234'

db.session.add(user)

db.session.commit()#

user=User.query.filter(User.username=='two1234').first()print(user.id,user.username,user.password)

 

@app.route('/')def hello_world():

    return 'Hello World!'

 

if __name__ == '__main__':

    app.run()

 

 

7、完成注册功能

@app.route('/sign_up/',methods=['GET','POST'])def sign_up():

    if request.method == 'GET':

        return render_template('zhuce.html')

    else:

        username = request.form.get('username')

        password = request.form.get('password')

        user = User.query.filter(User.username == username).first()

        if user:

            return 'username existed.'

        else:

            user1 = User(username=username, password=password)

            db.session.add(user1)

            db.session.commit()

            return redirect(url_for('sign_in'))

 

8、完成登陆功能

# 跳转登陆。

@app.route('/denglu/', methods=['GET', 'POST'])  

def denglu():

    if request.method == 'GET':

        return render_template('denglu.html')

    else:

        username = request.form.get('user')  

        password = request.form.get('pass')

        user = User.query.filter(User.username == username).first()  

        if user:

            if user.check_password(password):

                session['user'] = username  

                session.permanent = True  

                return redirect(url_for('daohang'))

            else:

                return u'用户密码错误'

        else:

            return u'用户不存在,请先注册'

 

    

 

9、登录后更新导航

 

 

10、实现导航条中的搜索功能

# 跳转首页搜索

@app.route('/search/')

def search():

    sousuo = request.args.get('sousuo')  

    fabus = Fabu.query.filter(

        or_(                               

            Fabu.title.contains(sousuo),  

            Fabu.detail.contains(sousuo)

        )

    ).order_by('-creat_time')

    return render_template('daohang.html', fabus=fabus)  

11密码保护

from werkzeug.security import generate_password_hash,check_password_hash

 

_password = db.Column(db.String(200), nullable=False)   

 

    @property  

def password(self):         

 return self._password

 

    @password.setter

    def password(self,row_password):   

        self._password = generate_password_hash(row_password)

 

    def check_password(self,row_password):   generate_password_hash

        result = check_password_hash(self._password,row_password)

        return result

 

# 跳转登陆。

@app.route('/denglu/', methods=['GET', 'POST'])  

def denglu():

    if request.method == 'GET':

        return render_template('denglu.html')

    else:

        username = request.form.get('user')  

        password = request.form.get('pass')

        user = User.query.filter(User.username == username).first()

        if user:

            if user.check_password(password):

                session['user'] = username  

                session.permanent = True

                return redirect(url_for('daohang'))

            else:

                return u'用户密码错误'

        else:

            return u'用户不存在,请先注册'

12、模型分离

posted @ 2018-01-05 13:34  曾志伟  阅读(270)  评论(0编辑  收藏  举报