期末作品检查
1、学期个人总结
在这个学期在杜老师的带领下学习了Python语言,这是一门相对于Java语言来说是比较简单的语言,用处也十分的广大。python是一种面向对象的解释型计算机程序设计语言,语法简洁清晰,目前已超越java成为最热门的编程语言之一。python是一种面向对象的解释型计算机程序设计语言,由荷兰人于1989年发明,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL协议。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
在前期的学习中,我们用Python进行简单算数计算。了解turtle库(海龟库),在此环境中练习条件、循环、函数定义的代码敲打,并画出了五角星、同心圆、太阳花、中国国旗等。随后便学习了字符串的基本操作,学会输入字符串,输出代码计算后的结果。还有凯撒密码、GDP格式化输出、九九乘法表等简单操作。利用python进行英文词汇统计,组合数据类型练习,用文件形式实现完成的英文词频统计、中文词频统计。利用datetime处理日期和时间,将字符串转化成imestamp与timedelta等等。
后期我们使用了PyCharm学会了网页的开发设计,也是第一次接触到了前段,还有连接数据库,引用了上学期学习的对数据库的增删查改的功能。第一次自己设计网站,觉得还是挺满意的,但是这其中还是存在着很多的不足需要改善,之后会继续努力学习Python语言,以改善现阶段的这个不完善的项目。
2、使用工具
在Python开发过程中,我们使用的主要工具是pycharm软件,使用到的还有数据库。
3、完成基本的网页设计
(1)网站父模板统一布局:头部导航条、底部图片导航、中间主显示区域布局
(2)注册页面
(3)登录页面
(4)发布问答,需要用户登录才能发布问答。
(5)用户登录后的用户账号和注销功能。
(6)用户发布问答
(7)查找功能
(8)个人中心
(4)部分代码演示
(1)父模板的继承与静态页面的加载
{% extends 'base.html' %} {% block registertitle %}{% endblock %} {% block registerhead %}{% block body %} {% block body %}{% endblock %}
(2)引用第三方库
from flask import Flask,render_template,request,redirect,url_for,session from flask_sqlalchemy import SQLAlchemy import config from functools import wraps from sqlalchemy import or_,and_ from datetime import datetime
(3)数据库的创建以及增删查改功能
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(50)) class Question(db.Model): __tablename__='question' id=db.Column(db.Integer,primary_key=True,autoincrement=True) title=db.Column(db.String(100),nullable=False) detail=db.Column(db.Text,nullable=False) creat_time=db.Column(db.DateTime,default=datetime.now) author_id=db.Column(db.Integer,db.ForeignKey('user.id')) author=db.relationship('User',backref=db.backref('question')) class Comment(db.Model): __tablename__='comment' id=db.Column(db.Integer,primary_key=True,autoincrement=True) author_id=db.Column(db.Integer,db.ForeignKey('user.id')) question_id=db.Column(db.Integer,db.ForeignKey('question.id')) detail=db.Column(db.Text,nullable=False) creat_time=db.Column(db.DateTime,default=datetime.now) question=db.relationship('Question',backref=db.backref('comments',order_by=creat_time.desc)) author=db.relationship('User',backref=db.backref('comments'))
#查询 #user = User.query.filter(User.username == 'nini').first() #print(user.id,user.password) #修改 #user = User.query.filter(User.username == 'ninini1').first() #user.password='123456' #user.username='nana' #db.session.commit() #print(user.id,user.password) #删除 #user = User.query.filter(User.username=='nana').first() #db.session.delete(user) #db.session.commit() #增加 #user = User(username='dadada',password='111111') #db.session.add(user) #db.session.commit()
(4)连接数据库
import os DEBUG =True SECRET_KEY = os.urandom(24) DIALECT ='mysql' DRIVER ='mysqldb' USERNAME='root' PASSWORD='' HOST='localhost' PORT='3306' DATABASE='ni_db' SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@127.0.0.1:3306/ni_db?charset=utf8' SQLALCHEMY_TRACK_MODIFICATIONS = False
(5)密码保护
@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): result=check_password_hash(self._password,row_password) return result