期末做业

1.我的学习总结css

 

 

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

刚开始接触python的时候,这个语言给个人第一感受就是简洁,过去咱们接触的比较多的编程语言是JavaJava是一门面向对象编程语言,不只吸取了C++语言的各类优势,还摒弃了C++里难以理解的多继承指针等概念,所以Java语言具备功能强大和简单易用两个特征。Java语言做为静态面向对象编程语言的表明,极好地实现了面向对象理论,容许程序员以优雅的思惟方式进行复杂的编程固然过去个人java并无学得很好 ,也只是略懂 皮毛 ,一个是由于专业要求不高 ,另外一个学习这个语言仍是有必定难度,但自从接触python,我发现好像发掘了本身对编程的兴趣,固然这归功于python易上手程度,python是如今主流的编程语言之一 ,他能够 用来干不少事情,这个学期咱们暂时只学习网页制做,但这已经不能知足我对这个语言的好奇心,已经火烧眉毛想学好它,应用到 更多地方。在这里我想分享一下过去pythonjava的不一样点。java

 

  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

我知道我如今学习的东西只是皮毛中的皮毛,往后确定会遇到 不少困难,可是编程的路上 原本 就会遇到各类问题,可是克服这些困难的过程无疑也会给我带来更多的成长。最后也但愿本身能一直坚持下去,在 学习python的路上越走越远。mysql

 

 

2. Python+Flask+MysqLweb建设

 1、使用工具

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

2、完成基本的页面设计

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

Flaskweb

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

# 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()

 

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

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()

 

 

七、完成注册功能

@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'))

 

八、完成登录功能

# 跳转登录。

@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'用户不存在,请先注册'

 

    

 

九、登陆后更新导航

 

 

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

# 跳转首页搜索

@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、模型分离

相关文章
相关标签/搜索