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 osDEBUG =TrueSECRET_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)密碼保護
@propertydef password(self): #外部使用return self._password@password.setterdef 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
?