期末作品检查

学无止境真难 学无止境真难     2022-10-08     636

关键词:

  一、个人学期总结

  经过一个学期的学习,信息管理系统课程终于接近了尾声。经过这阶段的学习,我有很多的收获和思考,认识到自己的很多不足之处,现在十分有必要对自己关于本学期信息管理系统课程的学习做一个总结,以形成经验,提高自己。

  首先,这个学期第一次接触到了python这门语言,我感受到python语言的优雅,明确,简单,比起Java语言更适合我们这种小白学习。比如,当我们完成同一个任务,Java语言需要写100多行代码,而python语言可能只要20多行代码就能够把程序实现。对于我们这种初学者来说容易入门,而且将来深入学习下去也可以编写一些复杂的程序。此外,在这学期,我们还学习了构造前端HTML。初次学HTML,我觉得一个前端的布局很有趣,可以按照自己的想法把一个页面构造起来,蛮有成就感的。但是,慢慢地,我发现要想建立一个好看的网页需要的知识储备还要很多,所以我们不能满足于现有的知识,要勇于开拓知识。而且,我们此次构造网页运用python+flask+mysql的web开发,把后台连接到了数据库上,让我们对数据库的学习也更深一步。对于我来说这种web开发模式相比其他Java开发更容易理解也更简洁,简直就是没学好Java的同学的福音。

  最后,我也发现自己学习的不足:比如,虽然每节课都跟着老师的步骤来学习,但是学习的知识点很容易就会忘记。还有有时候遇到代码出现bug,不能独立寻找问题、解决问题,只能求助老师和同学,这些都表明自己学得还不够深入不够踏实。所以希望,在以后的学习中,能够不断进步,不断地完善自己学习上的缺点。

  最后的最后是要感谢杜云梅老师的谆谆教诲,让我受益匪浅。希望以后能有机会在您的领导下学到更多技术。

  二、总结Python+Flask+MysqL的web建设技术过程

1.首页——完成首页前端页面

无序列表
<ul style="list-style: none">
  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
</ul>

2.首页功能——传递数据到前端页面

index(),传数据到index.html
def index():
    context = {question: Question.query.all()}
    return render_template(index.html, **context)
Question.query.order_by(-creat_time).all()

3.首页功能——显示列表

index.html:

for 循环每一条数据

<ul>
        {% for foo in questions %}
            <li>
                 <a href="#" >{{ foo.author.username }}</a>
                <a href="#">{{ foo.title }}</a>
                 <span >{{ foo.creat_time }}</span>
                 <p >  {{ foo.detail }}</p>
            </li>
        {% endfor %}
    </ul>

4.问答详情页——主py文件

项目.py:

@app.route(/detail/<question_id>)
def detail(question_id):
    quest = Question.query.filter(Question.id == question_id).first()
    return render_template(detail.html, ques = quest)

5.问答详情页——index.html

index.html:

<a href="{{ url_for(‘detail‘,question_id = foo.id) }}">{{ foo.title }}</a>

6.问答详情页——detail.html

detail.html布局:

<h3>{{ ques.id  }}{{ ques.title}}<br>
<small>{{  ques.creat_time }}{{ ques.author.username }} </small>
</h3>
<p class="lead">{{ ques.detail }}</p>

7.评论——对象关系印射

对象关系印射:

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)
    question = db.relationship(Question,backref = db.backref(comments))
    author = db.relationship(User,backref = db.backref(comments))

8.评论——视图函数

@app.route(/comment/,methods=[POST])
def comment():
    comment = request.form.get(new_comment)
    ques_id = request.form.get(question_id)
    auth_id = User.query.filter(User.username == session.get(user)).first().id
    comm = Comment(author_id=auth_id, question_id=ques_id, detail=comment)
    db.session.add(comm)
    db.session.commit()
    return redirect(url_for(detail, question_id=ques_id))

9.评论——表单

<form action="{{ url_for(‘comment‘) }}" method="post" style="margin: 20px">
        <div class="form-group">
            <textarea name="new_comment" rows="3"  placeholder="write your comment"></textarea>
            <input type="hidden" name="question_id" value="{{ ques.id }}">
        </div>
        <button type="submit" class="btn btn-default">发送</button>
    </form>

10.评论——评论前登陆

def loginFirst(func):
    @wraps(func)
    def wrapper(*args,**kwargs):
        if session.get(user):
            return func(*args,**kwargs)
        else:
            return redirect(url_for(login))
    return wrapper

11.评论——显示所有评论

 <ul class="list-group" style="margin: 10px">
        {% for foo in ques.comments %}
            <li class="list-group-item" >
                <span class="glyphicon glyphicon-heart-empty" aria-hidden="true"></span>
                 <a href="#" >{{ foo.author.username }}</a>
           <span >{{ foo.creat_time }}</span>
                <p style="text-indent: 18px">  {{ foo.detail }}</p>
            </li>
        {% endfor %}
    </ul>

12.评论——所有评论排序

class Comment(db.Model):
question = db.relationship(Question, backref=db.backref(comments, order_by=creat_time.desc))
question = db.relationship(Question, backref=db.backref(comments, order_by=id.desc))

13.评论——评论条数

反向引用:detail.html

评论:({{ ques.comments|length }})

index.html

评论:({{ foo.comments|length }})

14.个人中心——标签页导航

<ul class="nav_ul">
  <li role="presentation"><a href="#">Home</a></li>
  <li role="presentation"><a href="#">Profile</a></li>
  <li role="presentation"><a href="#">Messages</a></li>
</ul>

<ul>标签定义无序列表,li标签定义无序列表单/项。

同:<li role="presentation">与<a role="menuitem”></a>中role扮演角色是大同小异,即菜单列表单/项。

15.个人中心——父模板

{% extends base.html %}
{% block title %}个人中心{% endblock %}
{% block main %}
    <h3><span class="glyphicon glyphicon-user" aria-hidden="true"> </span>{{ user.username }}</h3>
    <ul class="nav nav-tabs">
      <li role="presentation" ><a href="{{ url_for(‘usercenter‘,user_id = user.id,tag = 1) }}">全部问答</a></li>
      <li role="presentation"><a href="{{ url_for(‘usercenter‘,user_id = user.id,tag = 2) }}">全部评论</a></li>
      <li role="presentation"><a href="{{ url_for(‘usercenter‘,user_id = user.id,tag = 3) }}">个人资料</a></li>
    </ul>
    {% block user %} {% endblock %}
{% endblock %}

16.个人中心——三个子页面

{% extends user.html %}

{% block user %}
    <div>
        全部问答
    </div>
{% endblock %}
{% extends user.html %}

{% block user %}
    <div>
        全部评论
    </div>
{% endblock %}
{% extends user.html %}

{% block user %}
    <div>
        个人信息
    </div>
{% endblock %}

17.个人中心——原视图函数与链接

@app.route(/usercenter/<user_id>)
def usercenter(user_id):
    user = User.query.filter(User.id == user_id).first()
    context = {user: user    }
    return render_template(usercenter.html, **context)
 <ul class="nav_ul">
        <li role="presentation"><a href="{{ url_for(‘usercenter‘,user_id=user.id ) }}">questions</a></li>
        <li role="presentation"><a href="#">comments</a></li>
        <li role="presentation"><a href="#">infomation</a></li>
    </ul>
<a href="{{ url_for(‘usercenter‘,user_id = foo.author_id) }}

18.个人中心——视图函数带标签页面参数

@app.route(/usercenter/<user_id>/<tag>)
@login_re
def usercenter(user_id, tag):
    user = User.query.filter(User.id == user_id).first()
    context = {user: user    }
    if tag == ‘1:
        return render_template(usercenter1.html, **context)
    elif tag == ‘2:
        return render_template(usercenter2.html, **context)
    else:
        return render_template(usercenter3.html, **context)

19.个人中心——导航标签链接

个人中心父模板:

 <ul class="nav nav-tabs">
      <li role=“presentation”><a href=“{{ url_for(‘usercenter’,user_id = user.id,tag = ‘1’) }}">全部问答</a></li>
      <li role="presentation"><a href="{{ url_for(‘usercenter‘,user_id = user.id,tag = ‘2’) }}">全部评论</a></li>
      <li role="presentation"><a href="{{ url_for(‘usercenter‘,user_id = user.id,tag = ‘3’) }}">个人资料</a></li>
  </ul>

20.个人中心——有链接到个人中心页面

base.html:

<a href="{{ url_for(‘usercenter‘,user_id = session.get(‘userid‘), tag=1) }}">{{ session.get(user) }}</a>

index.hml:

<a href="{{ url_for(‘usercenter‘,user_id = foo.author_id, tag = 1) }}" >{{ foo.author.username }})</a>

detail.html:

<a href="{{ url_for(‘usercenter‘, user_id = ques.author_id, tag =1) }}" >{{ foo.author.username}}</a>

21.搜索功能——准备

.py文件:

@app.route(/search/)
def search():
    pass

base.html搜索框所在的:

<form action="{{ url_for(‘search‘) }}" method="get">
     <input name="q" type="text" placeholder="请输入关键字">

22.搜索功能——视图函数

获取搜索关键词:

q = request.args.get(q’)

条件查询:

qu = Question.query.filter(Question.title.contains(q)).order_by(-creat_time’)

加载查询结果:

return render_template(index.html, question=qu)

23.搜索功能——组合条件查询

组合条件查询:

from sqlalchemy import or_
qu = Question.query.filter(or_(Question.title.contains(q), Question.detail.contains(q))).order_by(-creat_time)

24.密码保护

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(200), nullable=False) #内部使用
    nickname = db.Column(db.String(50))
from werkzeug.security import generate_password_hash, check_password_hash

@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

登录:

def login():
    if request.method == GET:
        return render_template(login.html)
    else:
        username = request.form.get(username)
        password1 = request.form.get(password)
        user = User.query.filter(User.username == username).first()
        if user:
            if user.check_password(password1):
                session[userid] = user.id
                session.permanent = True
                return redirect(url_for(index))
            else:
                return upassword error
        else:
            return uerror username

期末作品检查

1.个人期末总结这学期杜云梅老师教的信息系统管理和网站设计,我从中学到了好多,学会了如何设计首页页面,注册页面以及注册功能,登录页面以及登录功能。还学会了设计个人中心,其中包含了全部问答、全部评论以及个... 查看详情

期末作品检查

    本学期我学习了使用Flask框架搭建一个webservice,并在其中加上一些简单的css,js,html等。Python是一种高级动态,完全面向对象的语言,方便快捷。关于web的建设,前端页面我们做了导肮页面、登录注册页面、发... 查看详情

期末作品检查

...   本学期学习了管理信息系统这门课程,临近期末,觉得颇有收获。管理信息系统主要由前端和后端组成,前端由html语言编写,主要用于设计网站页面,该语言功能强大,语法规范,我在学习的时候感觉容易上手。... 查看详情

期末作品检查

1.个人学期总结    经过一学期的学习之后,我学习到了很多以前从未涉及的知识。已经可以独立完成一个简易的具有登陆注册页面的网站。这在之前是从未想象的。如果说这学期有什么最大的收获的话,那我的回... 查看详情

期末作品检查

 个人学期总结:学习python,首先要配置好环境,安装好软件,   一开始老师教turtle利用条件、循环、函数定义画各种图形如,五角星、同心圆、太阳花、中国国旗等;然后学习了字符串的基本操作,输出代码计算... 查看详情

期末作品检查

1.个人学期总结    本人在这学期中学习了管理信息系统这门科目,这门科目主要讲解了基于Python的Flask框架web建设项目。Python,是一种面向对象的解释型计算机程序语言,由荷兰人于1989年发明,第一个公开发行版... 查看详情

期末作品检查

个人学期总结  经过一学期系统的学习,我已经能熟练运用基于Python的Flask框架web建设项目。Python是一种面向对象、直译式计算机程序设计语言,由GuidovanRossum于1989年底发明。第一个公开发行版发行于1991年。Python语法简捷... 查看详情

期末作品检查

  一、个人学期总结  经过一个学期的学习,信息管理系统课程终于接近了尾声。经过这阶段的学习,我有很多的收获和思考,认识到自己的很多不足之处,现在十分有必要对自己关于本学期信息管理系统课程的学习做一个... 查看详情

期末作品检查

一、个人学期总结    在本学期中我学习了管理信息系统这门课程,并实现了基于Python的Flask框架web建设项目,Python,是一种面向对象的解释型计算机程序语言。学期初始,我们学习了Python的基础语法,输入、输出... 查看详情

期末作品检查

个人学期总结本学期学习了近几年比较热门的python,发现python相对Java要简单也有趣很多,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。学习python比较容易入门。Python具有面向对象,解释型,丰... 查看详情

期末作品检查

个人学期总结总结Python+Flask+MysqL的web建设技术过程,标准如下:即是对自己所学知识的梳理也可作为初学入门者的简单教程也可作为自己以后复习的向导也是一种向外展示能力的途径一、个人学期总结     在这... 查看详情

期末作品检查

一、个人学期总结  本学期从一开始便接触Python语言,感觉Python还是比较容易上手的。从一开始简单的几何图形制作到最后网页数据库的链接实现,这个过程其实不算长,不过也因此最后作业的完成也比较简单。如果想从... 查看详情

期末作品检查

个人学期总结 在本学期我们学习了一门新语言python,他的语句不像那些java那么复杂,因为PY是解释性语言,天生就有作为测试脚本语言的优势,语法简单,通俗易懂,可移植性好。对于我们这些初学者而言还是比较容易上手... 查看详情

期末作品检查

个人学期总结总结Python+Flask+MysqL的web建设技术过程,标准如下:即是对自己所学知识的梳理也可作为初学入门者的简单教程也可作为自己以后复习的向导也是一种向外展示能力的途径  在一学期里我们学习并实现了基于Pyt... 查看详情

期末作品检查

个人学期总结   在这个学期里,在老师带领下,我们学习了管理信息系统这门课程。由一开始懵懵懂懂的概念知识到后面基本熟悉的上机操作,这都离不开老师对我们一步步的指导。在这个课程中我发现,跟随老师的... 查看详情

期末作品检查

个人心得在这个学期,我们初接触python,python是一种面向对象的解释型计算机程序设计语言,从简单的输出输入计算,到引入 turtle库,绘制多种多样的图形包括我们的国旗,接着学习了字符串基本操作,学会了凯撒密码,自... 查看详情

期末作品检查

一、个人学期总结这学期我们学习了杜云梅老师的python这门课并实现基于Python的Flask框架web建设项目,使我受益匪浅,学习到了许多知识。老师上课概念清晰,而且十分注重联系实际包含了大量的实际案例和案例研究,通过这些... 查看详情

期末作品检查

个人总结本学期第一次接触web前端开发技术,以前完全没有接触过Python+Flask+MysqL这些工具和技术,对这些技术比较陌生,上手也表较慢。所以在空闲时间会在网上找一些关于这些技术的资料来了解并熟悉它要如何搭建。了解到要... 查看详情