精华内容
下载资源
问答
  • 我ASP了一个个人博客,里面有一个留言板,我程序里面想加一个数据库,里面加一个表,能把提交的内容放进去![![图片说明](https://img-ask.csdn.net/upload/201801/08/1515383950_761660.png)图片说明]...
  • 声明:以下内容是本人大二在某...留言板需求较为简单,用户可以在页面输入昵称和邮箱,输入留言内容(至少50字,上限500字),提交后则在页面下方显示最新的十条留言信息(2)flask简介flask是一个轻量级的Web应用框架,使...

    声明:以下内容是本人大二在某公司实习时学习python做的一个小练习!代码风格比较差,不怎么优美!还请大家指教!

    一.题目与背景知识说明

    (1)题目描述

    学习flask,并编写一个基于flask技术的留言板程序。留言板需求较为简单,用户可以在页面输入昵称和邮箱,输入留言内容(至少50字,上限500字),提交后则在页面下方显示最新的十条留言信息

    (2)flask简介

    flask是一个轻量级的Web应用框架,使用Python编写。基于WerkzeugWSGI工具箱和Jinja2模板引擎。Flask使用BSD授权。Flask也被称为 “microframework” ,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

    二.需求分析

    1.网络留言板,又称为留言簿或留言本,是目前网站中使用较广泛的一种与用户沟通、交流的方式。通过留言板,可收集来自用户的意见或需求信息,并可作出相应的回复,从而实现网站与客户之间及不同客户之间的交流与沟通。通过留言板用户和访问者在Internet上实现信息的快速传递,提高办事效率。因此留言板已成为现代人沟通和获取消息的重要组成部分。开发一个留言系统,首先需要确定留言的功能是什么,也就是用户想要留言版所拥有的作用。用户使用留言是按照一定的流程来进行的:用户输入姓名进入留言,可以就某个话题展开讨论,通过留言功能给个人或者网站提出自己的意见。

    三.程序设计思路

    本程序基于flask的web框架,用python实现了留言板功能,留言数据存储在sqlite数据库上。并且用bootstrap制作了较为简洁美观的界面。下面简要说明下具体实现:

    (1)具体函数方法:

    def connect_db():快速连接到指定数据库的方法

    def init_db():初始化数据库

    def show_entries():输出函数,会将条目作为字典传递给 show_entries.html 模板,并返回之后的渲染结果

    def add_entry():用户添加新的留言信息函数,并只响应 POST 请求,表单显示在 show_entries.而且对输入的字数做了限制在50字到500字范围,不在这个范围就不提交到数据库.

    def login():登录函数

    def logout():退出登录函数

    (2)数据库

    本次实验采用的是sqlite数据库,下面是数据库中建立的存储留言信息的table ,如图所示:

    id是自增的,用来做主键,比如显示最新的十条留言信息就是用id值实现.

    四.程序运行说明

    首先,打开浏览器输入程序的地址,显示界面如下图:

    点击输入留言信息,运行图片如下:

    显示最新的留言信息如下:(最新留言名字加大显示)

    五.程序清单(附有注释)

    # -*- coding: utf-8 -*-

    from __future__ import with_statement

    import sqlite3

    from flask import Flask,request,session,g,redirect,url_for,\

    abort,render_template,flash

    from contextlib import closing

    # configuration

    DATABASE = '/home/feng/project/flaskr/flaskr.db'#数据库存储路径

    DEBUG = True

    SECRET_KEY = 'development key'

    USERNAME = 'admin'

    PASSWORD = 'default'

    #create our little application :)

    app = Flask(__name__)

    app.config.from_object(__name__)

    app.config.from_envvar('FLASKR_SETTINGS', silent=True)

    def connect_db():#快速连接到指定数据库的方法

    return sqlite3.connect(app.config['DATABASE'])

    def init_db():#初始化数据库

    with closing(connect_db()) as db:

    with app.open_resource('schema.sql') as f:

    db.cursor().executescript(f.read())

    db.commit()

    @app.before_request

    def before_request():

    g.db = connect_db()

    @app.teardown_request

    def teardown_request(exception):

    g.db.close()

    @app.route('/')

    def show_entries():#输出函数,会将条目作为字典传递给 show_entries.html 模板,并返回之后的渲染结果

    cur = g.db.execute('select name,email,text from entries order by id desc limit 10')

    entries = [dict(name=row[0], email=row[1], text=row[2]) for row in cur.fetchall()]

    return render_template('show_entries.html', entries=entries)

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

    def add_entry():#用户添加新的留言信息函数,并只响应 POST 请求,表单显示在 show_entries

    if not session.get('logged_in'):

    abort(401)

    if len(request.form['text']) >50 and len(request.form['text'])<500:#实现控制字数在50到500范围内

    g.db.execute('insert into entries (name,email,text) values (?,?,?)',

    [request.form['name'],request.form['email'], request.form['text']])

    g.db.commit()

    flash('New entry was successfully posted')

    else:

    flash('The input range must be between 50 and 500 characters ')#如果留言信息不在范围内作出提示

    return redirect(url_for('show_entries'))

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

    def login():#登入函数

    error = None

    if request.method == 'POST':

    if request.form['username'] != app.config['USERNAME']:

    error = 'name error'

    elif request.form['password'] != app.config['PASSWORD']:

    error = 'password error'

    else:

    session['logged_in'] = True

    flash('log in')

    return redirect(url_for('show_entries'))

    return render_template('login.html', error=error)

    @app.route('/logout')

    def logout():#退出登录函数

    session.pop('logged_in', None)

    flash('log out')

    return redirect(url_for('show_entries'))

    if __name__ == '__main__':

    init_db()

    app.run(debug=True)

    六、小结(收获和体会)

    由于出学python,所以几天时间搞这个还是比较大压力的!还有就是之前看flask觉得很吃力,现在虽然做出东西来,但是心里还是没有底子的感觉!不过就是觉得bootstrap很方便,很好用!但是时间关系,就做的很一般。只能说希望在以后的实践中逐渐提高自己的水平吧,尽快摆脱菜鸟身份!

    展开全文
  • 用Repeater留言板的分页功能

    千次阅读 2012-08-30 15:43:23
    了一个网站,其中的在线留言板块是用Repeater来显示留言的,这样可以用少的代码还实现多的功能,但是不知道怎么分页,要是留言过多就会使页面变的很长,能过查看众多网友的经验,知道用PagedDataSource来实现。...


    做了一个网站,其中的在线留言板块是用Repeater来显示留言的,这样可以用少的代码还实现多的功能,但是不知道怎么分页,要是留言过多就会使页面变的很长,能过查看众多网友的经验,知道用PagedDataSource来实现。

     

    Repeater分页,需要依靠PagedDataSource。这个类存在于System.Web.UI.WebControls命名空间。它的作用是作为数据源与数据显示控件的中间介质。如:

      数据源->PagedDataSource->数据绑定控件

      之间的关系通过以下代码来实现:

      PagedDataSource pds=new PagedDataSource ();

      pds.DataSource=dataTable;

      repeater1.DataSource=pds;

      repeater1.DataBind();

     

     

     

    这是前台aspx页代码:

    <div id="onlinely">
    <div id="xianshily">
    <asp:Repeater runat="server" ID="Repeater1">
    <ItemTemplate>
    <ul id="xianshi1">
    <li id="xianshi2">
    <ul class="ly1">
    <li class="ly2">留言人:</li>
    <li class="ly3"><asp:Label runat="server" ID="lyren" Text='<%#Eval("lyname") %>'></asp:Label></li>
    <li class="ly4">时间:</li>
    </ul>
    <ul class="ly1">
    <li class="ly2">留言内容:</li>
    <li class="ly3"><asp:Label runat="server" ID="lynr" Text='<%#Eval("neirong") %>'></asp:Label></li>
    <li class="ly4"><asp:Label runat="server" ID="lyt" Text='<%#Eval("lytime") %>'></asp:Label></li>
    </ul>
    <ul class="ly1">
    <li class="ly2">回复:</li>
    <li class="ly3"><asp:Label runat="server" ID="lyhf" Text='<%#Eval("huifu") %>'></asp:Label></li>
    <li class="ly4"><asp:Label runat="server" ID="hft" Text='<%#Eval ("hftime") %>'></asp:Label></li>
    </ul>
    </li></ul>
    </ItemTemplate>
    </asp:Repeater>
    </div>
    <div id="pages">
    <asp:hyperlink id="lnkPrev" runat="server">上页</asp:hyperlink>
    <asp:hyperlink id="lnkNext" runat="server">下页</asp:hyperlink>
    第<asp:label id="lblCurrentPage" runat="server"></asp:label>页
     共 <asp:label id="lblTotalPage" runat="server"></asp:label>页
    </div>
    <div id="ly">
    <ul>
    <li>
    <ul class="ly5">
    <li class="ly6">姓名:</li>
    <li class="ly7"><asp:TextBox runat="server" ID="lyname"></asp:TextBox></li>
    </ul>
    <ul class="ly5">
    <li class="ly6">留言内容:</li>
    <li class="ly7"><asp:TextBox runat="server" ID="lyneirong" TextMode="MultiLine" Wrap="true" Height="100px" Width="300px"></asp:TextBox></li>
    </ul>
    
    
    </li>
    </ul>
    
    <div id="tijiao">
    <ul>
    <li><asp:Button runat="server" ID="Button1" Text="提交" οnclick="tijiao_Click" /></li>
    <li><asp:Button runat="server" ID="quxiao" Text="取消" οnclick="quxiao_Click" /></li>
    </ul>
    </div>
    </div>
    </div>


     

     

     

    这是aspx.cs页代码:

     

     

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    
    using System.Data.Common;
    
    public partial class onlinely : System.Web.UI.Page
    {
    
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["zgbygy"].ConnectionString);
       
      
    
        protected void Page_Load(object sender, EventArgs e)
        {
            conn.Open();
            string sql = "select * from liuyan order by lytime desc";
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            PagedDataSource pgds=new PagedDataSource();
            pgds.DataSource = ds.Tables[0].DefaultView; 
            //        设置允许分页
            pgds.AllowPaging = true;
            //        每页显示为8行
            pgds.PageSize = 8;
            //        显示总共页数
            lblTotalPage.Text = pgds.PageCount.ToString();
            //     当前页
            int CurrentPage;
            //     请求页码为不为null设置当前页,否则为第一页
            if (Request.QueryString["Page"] != null)
            {
    
                CurrentPage = Convert.ToInt32(Request.QueryString["Page"]);
            }
    
            else
            {
                CurrentPage = 1;
            }
            //   当前页所引为页码-1
            pgds.CurrentPageIndex = CurrentPage - 1;
            //   显示当前页码
            lblCurrentPage.Text = CurrentPage.ToString();
            //   如果不是第一页,通过参数Page设置上一页为当前页-1,否则不显示连接
            if (!pgds.IsFirstPage)
            {
                //            Request.CurrentExecutionFilePath为当前请求虚拟路径
                lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage - 1);
            }
            //        End If
            //   如果不是最后一页,通过参数Page设置下一页为当前页+1,否则不显示连接
            if (!pgds.IsLastPage)
            {
                //    Request.CurrentExecutionFilePath为当前请求虚拟路径
                lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage + 1);
            }
    
    
            Repeater1.DataSource =pgds;
            Repeater1.DataBind();
            cmd.Dispose();
            conn.Close();
        
    
    
      }
    
      protected void tijiao_Click(object sender, EventArgs e)
      {
          try
          {
              conn.Open();
              string sql = "insert into liuyan (lyname,neirong,lytime) values ('" +lyname.Text +"','" +lyneirong.Text + "','" + DateTime.Now + "')";
              SqlCommand cmd = new SqlCommand(sql, conn);
              cmd.ExecuteNonQuery();
              conn.Close();
              this.lyname.Text = "";
              this.lyneirong.Text = "";
              
              Response.Redirect("onlinely.aspx");
          }
          catch 
          {
     
          }
    
    
      }
      protected void quxiao_Click(object sender, EventArgs e)
      {
    
          this.lyname.Text = "";
          this.lyneirong.Text = "";
    
      }
    
      public void xinashi(object sender, EventArgs e)
      {
          conn.Open();
          string sql = "select * from liuyan";
          SqlCommand cmd = new SqlCommand(sql, conn);
          SqlDataAdapter sda = new SqlDataAdapter(cmd);
          DataSet ds = new DataSet();
          sda.Fill(ds);
          Repeater1.DataSource = ds;
          Repeater1.DataBind();
          cmd.Dispose();
          conn.Close();
     
      }
     
    }
    
    


     

     

    展开全文
  • 完美学校网站系统全站源代码学校网站模板下载

    千次下载 热门讨论 2011-01-10 12:23:08
    7:全新留言板头像,留言可选定是否写给管理员看,并且加入留言审核功能。 8:新闻页快速评论功能,加入新闻阅读签收功能,新闻图片鼠标滚轮缩放功能,新闻标题后评论显示。 9:全新的单位部门设定。 10:增加...
  • 知识资源共享,一起交流怎么做项目 请关注订阅,本专栏会详细讲解JAVA+SSM框架的毕业设计,实现网站的开发 本篇内容专门为从事Java后端开发的面试者提供帮助,精准解决面试遇到的问题,欢迎讨论 登陆页面 ...

    有价值的Java项目参考资料,实现网站的开发(不是广告)

    资源下载地址

    https://download.csdn.net/download/qq_16397653/14128057

    请关注订阅,本专栏会详细讲解JAVA+SSM框架的毕业设计,实现网站的开发

    本系统可以实现了留言板的全部功能

    角色:管理员 用户

    管理员可以管理用户、管理所有留言

    用户可以管理自己的留言

    登陆后可以查看留言板的内容

    点击留言主题可以查看相应的留言内容和回复

    用户被禁言后不能回复

    登陆页面

    在这里插入图片描述

    注册页面

    在这里插入图片描述

    登录成功后

    在这里插入图片描述

    准备留言

    在这里插入图片描述

    留言成功

    在这里插入图片描述

    点击留言主题可以查看详细信息

    在这里插入图片描述

    可以在下方回复,被禁言的用户不能发言

    在这里插入图片描述
    在这里插入图片描述

    点击右上角进入后台管理系统,普通用户可以编辑和删除自己的留言

    在这里插入图片描述

    管理员可以管理所有留言、所有用户,自己的留言

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • SEO首页代码怎么优化

    千次阅读 2019-05-22 10:06:45
    很多网站,为了吸引访客的注意,添加...网站上遍布各种组件,留言板,在线沟通工具,分享按钮等,站长的初衷是好的,但更多的组件意味着很多网络连接或强制在加载页面之前进行,拉低了网站的打开速度,另外一方面也...

    很多网站,为了吸引访客的注意,添加很多组件,殊不知这样的组件越多,会越加延迟网站的打开速度;另外一方面,如果你的网站是图片站,那么更要合理的优化首页代码,有数据显示,通过代码瘦身可以让页面最高缩减百分之三十。

    1:删除多余的社交类组件。

    网站上遍布各种组件,留言板,在线沟通工具,分享按钮等,站长的初衷是好的,但更多的组件意味着很多网络连接或强制在加载页面之前进行,拉低了网站的打开速度,另外一方面也不利于用户体验。在这种情况下,我们就要优化首页代码,选择更小体积的代码,删除多余的组件代码。

    2:采用用户点击加载技术。

    如果你的网站是视频站点或图片站点,是不应该一次性加载网站的所有内容的,自动加载视频,图片等内容会加载API,这会直接拉低整站的速度,就这儿工具建议根据用户的需要,让他们自由点击,通过点击行为加载应该呈现的资源;举个例子,如果首页有大量图片内容,就可以采取滚动式页面,通过用户的下拉行为加载新的页面,这样做有利于用户体验,也有利于首页打开速度的提升。

    3:使用矢量技术处理图片。

    可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式。它由万维网联盟制定,是一个开放标准。

    使用矢量技术处理的图片,可被搜索引擎识别,且相同情况下其文件会更小。在此,推荐的工具有SVG edit,它可以将普通格式的文件转换为矢量图。

    展开全文
  • , 在完DedeCMS为自定义表单防恶意提交后,有用户需要用到这样的功能,就是DedeCMS的自定义表单能像留言板插件一样把提交的表单内容在前端也展示出来并实现分页展示效果,研究了一阵子后,终于搞定,今天就教大家...
  • 仿优酷苹果CMS模板全新UI影视模板源码完美运营含播放器(声明:其它网站出售的均为盗版是不能获取授权的,如果导致了服务器崩溃和数据丢失不要来找我) 首页弹窗可广告和公告使用 20.19.12.7更新手机端播放器...
  • 商校招生网站系统

    2012-02-26 16:50:21
    紧跟学校建 站市场的开发的学校网站管理程序,设计的非常漂亮美观的学校网站模板,同时提供有ASP学校网站系统免费下载,二 十多套PHP学校网站程序全功能下载,再也不用愁应该用什么学校网站程序,怎么去使用学校网站系统...
  • 紧跟学校建 站市场的开发的学校网站管理程序,设计的非常漂亮美观的学校网站模板,同时提供有ASP学校网站系统免费下载,二 十多套PHP学校网站程序全功能下载,再也不用愁应该用什么学校网站程序,怎么去使用学校网站系统...
  • 十多套PHP学校网站程序全功能下载,再也不用愁应该用什么学校网站程序,怎么去使用学校网站系统源码,怎么去突 出自己学校网站的特色,有别于其它学校网站,突出自己学校的形象,增强软实力.学校网站管理系统源码,强大的...
  • 紧跟学校建 站市场的开发的学校网站管理程序,设计的非常漂亮美观的学校网站模板,同时提供有ASP学校网站系统免费下载,二 十多套PHP学校网站程序全功能下载,再也不用愁应该用什么学校网站程序,怎么去使用学校网站系统...
  • 7:全新留言板头像,留言可选定是否写给管理员看,并且加入留言审核功能。 8:新闻页快速评论功能,加入新闻阅读签收功能,新闻图片鼠标滚轮缩放功能,新闻标题后评论显示。 9:全新的单位部门设定。 10:增加...
  • 网站改造完了

    2008-07-21 22:08:00
    今天到公司没事情就把网站留言板进行了改造,原来哪个人的用了个分页控件,自己也没怎么改,就是尽量少改动的情况把网站做了.公司的哪个网站用了好多的table,看着都恼火.我也不想改了,改的话要改好多页面啦,就...
  • 长期浸泡在河蟹社会里面所以久而久之就有了一些河蟹的思维方式,正好有一段时间在一个.NET的网站访问统计系统,顺便想着怎么“监视”下每一个留言的博主们的所在地,于是就有了如今下图(网易留言板的样式)所示的...
  • 我的asp

    2007-06-13 14:05:00
     快毕业的时候在一个小公司实习,实习公司是web程序的,于是我有机会进入了一直从事的web程序开发行列,和所有刚毕业的大学生一样,内心充满激情,但不知如何入手(呵呵,我是这样的),记得第一个web程序是留言板,...
  • 免费个人博客系统(兼多用户博客系统)是支持一个空间2个网站的全能型网站管理系统,本免费个人博客系统通用和拓展性强,博客、文章系统、商城、企业网站、个性化论坛等类型网站都可以使用,将来网站无论如何转型或...
  • 12.前端页面精简,前端编码不用div标签,不用id、class规则的CSS样式,最大限度精简前端代码,鼓励用户抛弃div CSS前端代码编写模式,我们这样不是为了迎合HTML5,只是为了更合理的应用HTML标签; 13.安装程序...
  • 可能数数我网站上貌似没有那么多,因为有些是给个人的。 怎么说,这套纯个人博客主题我采用了一点微扁平的风格,主要走的方向是极简。 主题额外添加了存档、分类、标签页面(需要新建页面选择相应的模板)。 小白...
  • 8、网站增加了留言版功能。 9、强大多样化的站内搜索功能。 10、链接网站金币置顶,标色功能 11、后台广告管理功能。 12、自动获取PR,百度快照、百度权重、百度谷歌收录、alexa排名等。 13、分类管理网站链接 14、...
  • 有问题请上官方讨论区:www.51maiw.com留言板留言 v3.0sp1版更新和修正了: 1、更换了html编辑器,在360、firefox及Chrome都能正常显示了  2、取消了上传生成缩略图(发现用处不大),上传图片按年月生成文件夹  3、...
  • 用户注册功能、用户登陆功能、人发才招聘功能、求职、留言板等功能。 (3)、在校园网上能正常运行、访问。 (4)、提交文件:毕业设计(论文)+源程序文件+数据库文件+安装使用指南。 主要技术: ...
  • 【50】留言板◆完善的留言版功能,及时与网友互动!留言簿可在前台管理,可以回复留言。留言簿可设置 (1)留言是否需要审核:0全不需要 1会员不需要 2全都需要 (2)会员留言允许编辑删除的期限:XX小时 ...
  • 网上购物系统英文版综合网店版,完全免费的网店模版下载,电子商务时代,需要一个互联网站,开拓网络市场,请人建网站,设计网页花费巨大,功能还不怎么样,后续技术支持费用又高,何不用网软网上开店的购物网站系统正式版,...
  • 建站初期,下载站的结构以森林大地的“汉化超市”为基础,论坛从留言板逐步发展,后来成形的论坛即以YY的为基础。至于汉化教学,曾经考虑以Rapid的网站为原始模版,因Rapid没有加入,加上初期下载站和论坛事务所更加...
  • 建站初期,下载站的结构以森林大地的“汉化超市”为基础,论坛从留言板逐步发展,后来成形的论坛即以YY的为基础。至于汉化教学,曾经考虑以Rapid的网站为原始模版,因Rapid没有加入,加上初期下载站和论坛事务所更加...
  • 400个DreamWeaver插件

    2013-03-28 15:30:13
    很多朋友都问过这个窗口是怎么做的了。就是用这个插件 mxp/在代码编辑模式状态下,点击右键可以方便的插入连接外部样式表的HTML语句 mxp/在代码编辑模式状态下,点击右键可以方便的插入连接外部javascript的HTML语句...
  • 嵌入式实时操作系统uCOSII-邵贝贝

    热门讨论 2010-03-28 08:02:06
    头一个月,就有500多人从《嵌入式系统编程》杂志的网站留言板上下载我的源程序。Tyler先生真怕实时内核的商家们会要了他的命,因为在他的杂志上刊登了实时内核的源码,这使商家们感到不安。我猜测,商家们一定已经...
  •  点击商品之后,需要显示商品详细信息,通过商品的id返回指定商品的Bean对象,转化为JSON格式的数据,返回到前端页面显示,需要显示商品的留言信息,因此需要留言的Bean对象,包括数据留言id、留言的商品id、留言...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

网站留言板怎么做