精华内容
下载资源
问答
  • mycncart 新闻系统

    2015-08-09 20:14:10
    mycncart 新闻系统

    特色:

    1. 后台增删改新闻内容及图片;

    2. 新闻模组,可放置于不同布局页面不同位置;

    安装指导

    本安装指导假设您已经正常运行适合版本的mycncart系统。

    1) 访问【扩展功能】 -> 【扩展功能安装】, 安装下载解压缩后的mcc024.ocmod.zip;

    2) 访问【扩展功能】 -> 【代码调整】,先点击按钮【清除】,后点击按钮【刷新】;

    3) 访问【系统设置】 -> 【管理员管理】 -> 【管理员分组】,为管理员选定权限,保存。

    4) 访问【扩展功能】 -> 【模组管理】,安装【新闻】模组,并编辑启用该模组;

    5) 访问【扩展功能】 -> 【新闻】,增删改相关新闻;

    6) 安装完毕。
    展开全文
  • 基于PHP+mysql实现新闻发布系统的开发,新闻,首页,数据库,... 系统简介一个简单的新闻系统,包含了四个功能,增删改查,利用PHP语言,结合了MySQL数据库,开发工具用的是Dreamweaver。2.数据库设计-- 数据库: `newsd...

    基于PHP+mysql实现新闻发布系统的开发,新闻,首页,数据库,效果图,图片

    基于PHP+mysql实现新闻发布系统的开发

    易采站长站,站长之家为您整理了基于PHP+mysql实现新闻发布系统的开发的相关内容。

    新闻发布系统

    1. 系统简介

    一个简单的新闻系统,包含了四个功能,增删改查,利用PHP语言,结合了MySQL数据库,开发工具用的是Dreamweaver。

    2.数据库设计-- 数据库: `newsdb`CREATE DATABASE IF NOT EXISTS `newsdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;USE `newsdb`;-- 表的结构 `news`CREATE TABLE IF NOT EXISTS `news` ( `id` int(9) NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `keywords` varchar(50) NOT NULL, `author` varchar(16) NOT NULL, `addtime` datetime NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

    首页

    新闻首页

    新闻首页

    新建新闻  修改新闻    删除新闻  搜索新闻

    首页效果图

    7a2003e93dffd0022cb80b898a8df1d9.png

    新建新闻

    插入新闻

    插入新闻

    标题
    关键字
    作者
    内容

    新建新闻效果图

    d5f7814ad9db748d1ff4671180a0ed1f.png

    新建新闻PHP

    动态<?php //加载数据库//include("mysql.php");//连接数据库mysql_connect("localhost","root","") or die("连接失败");//设置编码格式mysql_query("set names utf-8");//选择数据库mysql_query("use newsdb") or die("选择失败");//获取输入文本$bt=$_POST['title'];$gzj=$_POST['keywords'];$zz=$_POST['author'];$nn=$_POST['content'];//获取系统时间/*改时区*/date_default_timezone_set('PRC');$time=date('Y-m-d h:i:s');//加入数据$mysql="insert into news values(null,'$bt','$gjz','$zz','$time','$nn')";$aa=mysql_query($mysql);//判断是否插入if($aa){ echo "添加成功";} else{echo "添加失败";}?>

    查询新闻

    搜索新闻

    查询新闻效果图

    13ca4eeb3a2cd246aef55c982c28bc81.png

    查询新闻PHP

    搜索新闻
    ID标题关键字作者时间内容
    $sy[0]$sy[1]$sy[2]$sy[3]$sy[4]$sy[5]
    新闻首页";?>

    查询新闻效果图

    4f0bd5714014800ba3e8e70ae25c263b.png

    注意:

    1.连接数据库

    mysql_connect(“localhost”,”root”,”“) or die(“连接失败”);

    2.设置编码格式

    mysql_query(“set names utf-8”);

    3.选择数据库

    mysql_query(“use newsdb”) or die(“选择失败”);

    在这里先做出增加和查询两个功能,其他功能持续更新中。。。。。。

    期待与你一起学习。以上就是关于对基于PHP+mysql实现新闻发布系统的开发的详细介绍。欢迎大家对基于PHP+mysql实现新闻发布系统的开发内容提出宝贵意见

    展开全文
  • Flask-新闻系统项目

    2019-05-21 19:37:40
    项目:新闻系统 Todo:【新闻系统】 需要用户注册,登录,登陆之后可以在前台进行发布新闻,管理员在后台进行登录,登录之后就可以看到已经注册了哪些用户,以及哪个用户发布了什么新闻。 查看新闻,进行审核,审核...

    项目:新闻系统

    Todo:【新闻系统】
    
    需要用户注册,登录,登陆之后可以在前台进行发布新闻,管理员在后台进行登录,登录之后就可以看到已经注册了哪些用户,以及哪个用户发布了什么新闻。
    查看新闻,进行审核,审核通过的新闻才能正常显示出来。
    正常在前台发布的是待审核的文章,待审核状态的文章是不能显示出来的。
    
    用户中心:修改资料,上传头像,用户发布的文章,收藏的文章。
             可以评论文章,评论的信息要显示到文章详情页下面。
             收藏文章。
             用户列表,对用户进行删除,看到文章列表,文章分类是在后台进行添加的。
    
    前台:
        注册模块
        登录模块:验证码
        用户中心:
            上传头像:上传图片
        发布文章:富文本编辑器
        首页:分页展示文章列表
        文章分类:点击某一个分类展示此分类下面的文章
        文章详情页面:评论,收藏(多对多)
    
    后台:
        登录
        添加修改删除分类
        审核文章
        管理用户
        文章列表:搜索
    

    在这里插入图片描述

    # start.py
    
    """ Todo:入口文件【不放置任何前后台视图函数】 """
    
    from models import *
    
    from modules.web.index import index_blue
    from modules.web.user import user_blue
    from modules.web.news import news_blue
    
    from modules.admin.index import admin_index_blue
    from modules.admin.news import admin_news_blue
    
    
    # 注册蓝图:
    # 前台:
    app.register_blueprint(index_blue)
    app.register_blueprint(user_blue, url_prefix='/user')
    app.register_blueprint(news_blue, url_prefix='/news')
    # 后台:
    app.register_blueprint(admin_index_blue, url_prefix='/admin')
    app.register_blueprint(admin_news_blue, url_prefix='/admin')
    
    
    # 将cate_id放置到g变量中,以便各个视图函数使用
    @app.before_request
    def g_cates_data():
        cates = Cate.query.all()
        g.cates = cates
    
    
    if __name__ == '__main__':
        # db.drop_all()
        # db.create_all()
        app.run()
    
    
    # setting.py
    
    """ Todo:配置文件 """
    
    DEBUG = True        # 开启调试
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:mysql@127.0.0.1:3306/item?charset=utf8'      # 连接数据库
    # SQLALCHEMY_ECHO = True      # 查询时会显示原始sql语句【在控制面板显示】
    SECRET_KEY = 'abc'      # 密钥
    SQLALCHEMY_TRACK_MODIFICATIONS = False      # 是否显示警告信息
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True        # 数据内容发生改变之后,自动提交
    PER_PAGE_NUM=2      # 分页【如果总数据未超过定义的分页数据PER_PAGE_NUM,则不会显示分页】
    
    
    # models.py
    
    """ Todo:创建表 """
    
    from apps import *
    from datetime import datetime
    
    
    # 基类
    class BaseModel():
        create_time = db.Column(db.DateTime, default=datetime.now, comment='创建时间')
        # onupdate 这个属性可以起到更新记录的时候更新 update_time 字段为当时的修改时间
        update_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now ,comment='更新时间')
    
    
    ''' 前台 '''
    # 用户表和新闻表的关系表
    tb_user_news = db.Table(
        'tb_user_news',
        db.Column('id', db.Integer, primary_key=True, comment='主键ID'),
        db.Column('user_id', db.Integer, db.ForeignKey('user.id'), comment='外键指向user表ID'),
        db.Column('news_id', db.Integer, db.ForeignKey('news.id'), comment='外键指向news表ID'),
    )
    
    
    # 用户表
    class User(db.Model, BaseModel):
        id = db.Column(db.Integer, primary_key=True, comment='主键ID')
        name = db.Column(db.String(30), nullable=False, default='', comment='用户名')
        pwd = db.Column(db.String(30), nullable=False, default='', comment='密码')
        pic = db.Column(db.String(100), default='default.jpg', comment='头像')
    
        collections = db.relationship('News', secondary=tb_user_news)
    
    # 新闻分类表
    class Cate(db.Model, BaseModel):
        id = db.Column(db.Integer, primary_key=True, comment='新闻分类ID')
        name = db.Column(db.String(30), nullable=False, default='', comment='新闻分类名称')
    
        newss = db.relationship('News', backref='one_cate' )
    
    # 新闻文章表
    class News(db.Model, BaseModel):
        id = db.Column(db.Integer, primary_key=True, comment='新闻文章主键ID')
        title = db.Column(db.String(30), nullable=False, default='', comment='新闻文章名称')
        content = db.Column(db.Text, comment='新闻内容')
        status = db.Column(db.Integer, default=0, comment='新闻状态:0未审核,1通过,-1未通过')
    
        cate_id = db.Column(db.Integer, db.ForeignKey(Cate.id), comment='外键指向新闻分类ID')
        user_id = db.Column(db.Integer, db.ForeignKey(User.id), comment='外键指向用户ID')
    
    
    # 评论表
    class Comment(db.Model, BaseModel):
        id = db.Column(db.Integer, primary_key=True, comment='主键ID')
        content = db.Column(db.String(255), comment='评论内容')
        user_id = db.Column(db.Integer, db.ForeignKey(User.id), comment='外键指向用户ID')
        news_id = db.Column(db.Integer, db.ForeignKey(News.id), comment='外键指向新闻ID')
    
    
    ''' 后台 '''
    # 管理员表
    class Admin(db.Model, BaseModel):
        id = db.Column(db.Integer, primary_key=True, comment='主键ID')
        name = db.Column(db.String(30), comment='管理员名称')
        pass_hash = db.Column(db.String(128), comment='管理员密码')
    
    
    # manager.py
    
    """ Todo """
    
    from flask_script import Manager
    from apps import app
    from flask_migrate import Migrate, MigrateCommand
    from models import db
    
    manager = Manager(app=app)
    
    migrate = Migrate(app=app, db=db)
    
    manager.add_command('db', MigrateCommand)
    
    if __name__ == '__main__':
        manager.run()
    
    # apps.py
    
    """ Todo:实例化app,挂载各种扩展 """
    
    from flask import Flask, Blueprint, render_template, request, flash, redirect, url_for, session, make_response, g, current_app, jsonify
    from flask_sqlalchemy import SQLAlchemy
    from sqlalchemy import and_
    import sys, os
    from flask_uploads import UploadSet, IMAGES, configure_uploads
    
    
    app = Flask(__name__)
    
    app.config.from_object('setting')
    
    # print(sys.modules['__main__'])      # 获取入口文件的物理位置:<module '__main__' from 'C:\\Users\\Dell\\Desktop\\ITEM\\start.py'>
    print(getattr(sys.modules['__main__'], '__file__'))     # C:\Users\Dell\Desktop\ITEM\start.py
    enter = getattr(sys.modules['__main__'], '__file__')
    #                    拼接后的路径:C:\Users\Dell\Desktop\ITEM/static/upload
    # 加os.path.abspath()后的绝对路径:C:\Users\Dell\Desktop\ITEM\static\upload
    root_path = os.path.abspath(os.path.dirname(enter)+'/static/upload')
    app.config['UPLOADED_ITEM_DEST'] = root_path        # 设置上传路径
    app.config['UPLOADED_ITEM_ALLOW'] = IMAGES        # 允许类型
    item = UploadSet('ITEM')        # 实例化图片上传类,设置上传的统一名称
    configure_uploads(app, item)        # 将app的config配置注册到UploadSet实例item
    
    db = SQLAlchemy(app=app)
    
    

    一、数据库迁移命令【即:生成 migrations 目录的命令】

    终端操作:

    1、初始化迁移环境:python manager.py db init

    2、生成迁移版本:python manager.py db migrate

    3、提交到数据库:python manager.py db upgrade

    注意:如果后期变更/增加表或者表中的字段,则只需要在终端输入后两条命令。(即:不需要初始化)

    二、modules 目录【admin和web】

    1、admin——后台

    # index.py【首页】
    
    """ Todo """
    
    from models import *
    from werkzeug.security import generate_password_hash, check_password_hash
    from utils.common import is_admin_login
    
    admin_index_blue = Blueprint('admin', __name__)
    
    
    # 定义创建管理员的视图函数
    @admin_index_blue.route('/add_admin')
    def add_admin():
        new_admin = Admin(name='admin', pass_hash=generate_password_hash('962464'))
        db.session.add(new_admin)
        return redirect(url_for('admin.login'))
    
    
    # 后台首页
    @admin_index_blue.route('/')
    @is_admin_login
    def index():
        newss = News.query.all()
        comments = Comment.query.all()
        users = User.query.all()
        return render_template('admin/index.html', newss=newss, comments=comments, users=users)
    
    
    # 后台登录
    # @admin_index_blue.route('/login', methods=['GET', 'POST'])
    # def login():
    #     if request.method == 'POST':
    #         name = request.form.get('name')
    #         pass_hash = request.form.get('pass_hash')
    #         one_admin = Admin.query.filter(Admin.name == name).first()
    #         if not one_admin:
    #             flash('管理员不存在')
    #         else:
    #             # 验证密码方法。返回True或False【第一个参数:数据库里面保存的密文密码。第二个参数:传递过来的明文密码】
    #             flag = check_password_hash(one_admin.pass_hash, pass_hash)
    #             if flag:
    #                 session['admin_id'] = one_admin.id
    #                 session['admin_name'] = one_admin.name
    #                 flash('管理员登录成功!')
    #                 return redirect(url_for('admin.index'))
    #             else:
    #                 flash('管理员登录失败')
    #     return render_template('admin/login.html')
    
    # 后台登录
    '''
    json
    '''
    @admin_index_blue.route('/login', methods=['GET', 'POST'])
    def login():
        # 定义一个字典
        # if request.method == 'POST':
        #     r = {
        #         'code':300,
        #         'message':'成功',
        #     }
        #     return jsonify(r)
    
        if request.method == 'POST':
            r = {}
            name = request.form.get('name')
            pass_hash = request.form.get('pass_hash')
            one_admin = Admin.query.filter(Admin.name == name).first()
            if not one_admin:
                r = {
                    'code':300,
                    'message':'用户不存在',
                }
            else:
                # 验证密码方法。返回True或False【第一个参数:数据库里面保存的密文密码。第二个参数:传递过来的明文密码】
                flag = check_password_hash(one_admin.pass_hash, pass_hash)
                if flag:
                    session['admin_id'] = one_admin.id
                    session['admin_name'] = one_admin.name
                    r = {
                        'code':200,
                        'message':'登录成功!',
                    }
                else:
                    r = {
                        'code':301,
                        'message':'管理员登陆失败...',
                    }
            return jsonify(r)
        return render_template('admin/login.html')
    
    
    # 后台退出
    @admin_index_blue.route('/logout', methods=['GET', 'POST'])
    def logout():
        session.pop('admin_id', None)
        session.pop('admin_name', None)
        flash('管理员退出成功')
        return redirect(url_for('admin.login'))
    
    
    # news.py
    
    """ Todo """
    
    from models import *
    from utils.common import is_admin_login
    
    admin_news_blue = Blueprint('admin_news', __name__)
    
    @admin_news_blue.route('news_list')
    @is_admin_login
    def news_list():
        page = int(request.args.get('page', 1))
        newss = News.query.paginate(page, current_app.config.get('PER_PAGE_NUM'))
        return render_template('admin/news_list.html', newss=newss)
    
    
    @admin_news_blue.route('audit_news', methods=['GET', 'POST'])
    @is_admin_login
    def audit_news():
        news_id = request.args.get('news_id')
        one_news = News.query.get(news_id)
        if request.method == 'POST':
            cate_id = request.form.get('cate_id')
            title = request.form.get('title')
            content = request.form.get('content')
            status = request.form.get('status')
            one_news.cate_id = cate_id
            one_news.title = title
            one_news.content = content
            one_news.status = status
            db.session.add(one_news)
            return redirect(url_for('admin_news.news_list'))
        return render_template('admin/audit_news.html', one_news=one_news)
    

    2、web——前台

    # index.py【首页】
    
    """ Todo """
    
    from models import *
    
    index_blue = Blueprint('index', __name__)
    
    '''
    分页步骤:
        1、首页的地址需要加?page=2,所以就需要获取当前页:page = int(request.args.get('page', 1)) 
        2、在视图函数当中就需要用paginate来获取数据了,两个参数:1、当前页;2、每页的条数
        3、newss:
            # newss.pages     # 总条数
            # newss.page      # 当前页
            # newss.items     # 所有的新闻数据
        4、引入分页样式和分页js
        5、新闻的数据就需要从newss.items当中进行遍历
        6、模板中使用分页插件
    '''
    @index_blue.route('/')
    def index():
        page = int(request.args.get('page', 1))
        kw = request.args.get('kw', '')
        # newss = News.query.all()
        newss = News.query.filter(and_(News.status == 1, News.title.like('%'+kw+'%'))).paginate(page, 2)
        # newss.pages     # 总条数
        # newss.page      # 当前页
        # newss.items     # 所有的新闻数据
        return render_template('web/index.html', newss=newss, kw=kw)
    
    
    # news.py
    
    """ Todo """
    
    from models import *
    
    news_blue = Blueprint('news', __name__)
    
    # 分类列表页【某个分类下的新闻列表】
    @news_blue.route('/news_list')
    def news_list():
        page = int(request.args.get('page',1))
        cate_id = request.args.get('cate_id')
        # 【相当于:select * from news where cae_id = 1 limit(0, 2)】
        newss = News.query.filter(and_(News.cate_id == cate_id, News.status == 1)).paginate(page, current_app.config.get('PER_PAGE_NUM'))
        return render_template('web/news_list.html', newss=newss, cate_id=cate_id)
    
    
    # 新闻详情页
    @news_blue.route('/news_detail')
    def news_detail():
        news_id = int(request.args.get('news_id'))
        one_news = News.query.get(news_id)
        comments = Comment.query.filter(Comment.news_id==news_id).all()
        is_collect = False      # 是否收藏的标志位
        user_id = session.get('id')
        if user_id:
            one_user = User.query.get(user_id)
            ids = [news.id for news in one_user.collections]
            if news_id in ids:
                is_collect = True
        return render_template('web/news_detail.html', one_news=one_news, comments=comments, is_collect=is_collect)
    
    
    # 添加/发表评论
    @news_blue.route('/add_comment', methods=['GET','POST'])
    def add_comment():
        news_id = request.args.get('news_id')
        content = request.form.get('content')
        user_id = session.get('id')
        print('news_id:', news_id)
        print('content:', content)
        print('user_id:', user_id)
        new_comment = Comment(content=content, user_id=user_id, news_id=news_id)
        db.session.add(new_comment)
        return redirect(url_for('news.news_detail', news_id=news_id))
    
    
    # 收藏文章
    @news_blue.route('/add_collect')
    def add_collect():
        user_id = session.get('id')
        one_user = User.query.get(user_id)
        news_id = request.args.get('news_id')
        one_news = News.query.get(news_id)
        one_user.collections.append(one_news)
        return redirect(url_for('news.news_detail', news_id=news_id))
    
    # 取消收藏
    @news_blue.route('/cancel_collect')
    def cancel_collect():
        user_id = session.get('id')
        one_user = User.query.get(user_id)
        news_id = request.args.get('news_id')
        one_news = News.query.get(news_id)
        one_user.collections.remove(one_news)
        return redirect(url_for('news.news_detail', news_id=news_id))
    
    
    # user.py
    
    """ Todo:视图函数 """
    
    from models import *
    from utils.captcha.captcha import captcha
    from apps import *
    from utils.common import is_login
    
    user_blue = Blueprint('user', __name__)
    
    
    # 用户注册
    @user_blue.route('/reg', methods=['GET','POST'])
    def reg():
        if request.method == 'POST':
            name = request.form.get('name')
            pwd = request.form.get('pwd')
            repwd = request.form.get('repwd')
            if not all([name, pwd, repwd]):
                flash('缺少参数')
            elif len(pwd) < 6:
                flash('密码长度必须大于6位')
            elif pwd != repwd:
                flash('两次密码不相同')
            else:
                try:
                    new_user = User(name=name, pwd=pwd)
                    db.session.add(new_user)
                    return redirect(url_for('user.login'))
                except Exception as e:
                    flash('注册失败...')
        return render_template('web/reg.html')
    
    
    # 用户登录
    @user_blue.route('/login', methods=['GET','POST'])
    def login():
        if request.method == 'POST':
            name = request.form.get('name')
            pwd = request.form.get('pwd')
            code = request.form.get('code')
            if not all([name, pwd, code ]):
                flash('参数不全')
            else:
                text = session.get('code').lower()      # 验证码转换为小写
                if text != code:
                    flash('验证码输入有误')
                else:
                    one_user = User.query.filter(User.name == name).first()
                    if not one_user:
                        flash('用户不存在')
                    else:
                        if one_user.pwd != pwd:
                            flash('密码不正确')
                        else:
                            session['id'] = one_user.id
                            session['name'] = one_user.name
                            print(session.get('id'))
                            print(session.get('name'))
                            flash('登录成功')
                            return redirect(url_for('index.index'))
        return render_template('web/login.html')
    
    
    # 验证码
    '''
    1、将验证码插件放到文件夹utils下面
    2、导入验证码包【from utils.captcha.captcha import captcha】
    3、调用验证码插入的方法生成验证码,并且用三个参数接收。【其中:text:具体验证码的值。image_url:二进制图片。】
    4、将验证码的值text保存到session中
    5、通过make_response去修改响应类型Content-Type为:image/jpg。然后将响应返回
    注意:
        如果报错:No module named 'PIL'
        解决方法:终端下载——pip install pillow
    '''
    @user_blue.route('/generate_code')
    def generate_code():
        # 生成验证码方法。并且用参数接收【name:验证码随机名。text:验证码的具体数字或字母。image_url:二进制图片地址。】
        name, text, image_url = captcha.generate_captcha()
        # print('文本:', text)
        # print('图片:', image_url)
        session['code'] = text
        # print('session:', session.get('code'))
        response = make_response(image_url)
        response.headers['Content-Type'] = 'image/jpg'
        return response
    
    
    # 退出
    @user_blue.route('/logout')
    def logout():
        session.pop('id', None)
        session.pop('name', None)
        flash('退出成功!')
        return redirect(url_for('user.login'))
    
    
    # 【用户中心】
    # 用户信息
    @user_blue.route('/user_info')
    @is_login
    def user_info():
        user_id = session.get('id')
        # print(user_id)
        one_user = User.query.get(user_id)
        cates = Cate.query.all()
        return render_template('web/user_info.html', one_user=one_user, cates=cates)
    
    # 用户修改
    '''
    1、配置form表单支持的数据类型:enctype="multipart/form-data"
    2、安装扩展包flask-uploads
    3、在apps中对扩展包进行配置
    4、在视图函数接收pic字段
    5、判断有没有上传图片,没有的话就不保存图片
    6、如果有,则通过item.save(pic)进行保存头像,同时将图片的地址接收过来pic_url = item.save(pic)
    7、判断pic_url有没有值,如果有,则更新此字段
    '''
    @user_blue.route('/user_edit', methods=['GET', 'POST'])
    @is_login
    def user_edit():
        user_id = session.get('id')
        one_user = User.query.get(user_id)
        if request.method == 'POST':
            name = request.form.get('name')
            pic = request.files.get('pic')      # 【注意】接收图片的方式为:files
            pic_url = ''
            if pic:
                pic_url = item.save(pic)        # 保存头像到本地,将图片的地址用变量pic_url接收
            try:
                one_user.name = name
                if pic_url:
                    one_user.pic = pic_url
                flash('头像修改成功!')
                return redirect(url_for('user.user_info'))
            except Exception as e:
                flash('头像修改失败')
        return render_template('web/user_edit.html', one_user=one_user)
    
    # 临时添加新闻分类方法【访问一次添加一次】
    @user_blue.route('/add_cates')
    def add_cates():
        one_cate1 = Cate(name='地球新闻')
        one_cate2 = Cate(name='火星新闻')
        one_cate3 = Cate(name='游戏新闻')
        one_cate4 = Cate(name='编程新闻')
        db.session.add_all([one_cate1, one_cate2, one_cate3, one_cate4])
        return '添加分类成功!'
    
    '''
    富文本编辑器引入步骤:
        1、将tinymce复制到static/web目录下
        2、将tinymce_setup.js复制到static/web/js目录下
        3、在input标签中加上:id="rich_content",富文本编辑器即可在页面显示出来
    '''
    # 发布新闻
    @user_blue.route('/user_post', methods=['GET', 'POST'])
    @is_login
    def user_post():
        cates = Cate.query.all()
        if request.method == 'POST':
            title = request.form.get('title')
            content = request.form.get('content')
            cate_id = request.form.get('cate_id')
            user_id = session.get('id')
            try:
                new_news = News(title=title, content=content, cate_id=cate_id, user_id=user_id)
                db.session.add(new_news)
                flash('添加新闻成功!')
                return redirect(url_for('user.my_newss'))
            except Exception as e:
                flash('添加新闻失败...')
        return render_template('web/user_post.html')
    
    # 我的发布
    @user_blue.route('/my_newss')
    @is_login
    def my_newss():
        user_id = session.get('id')
        my_newss = News.query.filter(News.user_id == user_id).all()
        return render_template('web/my_newss.html', my_newss=my_newss)
    
    # 文章详情页
    @user_blue.route('/user_news_detail')
    @is_login
    def user_news_detail():
        news_id = request.args.get('news_id')
        one_news = News.query.get(news_id)
        return render_template('web/user_news_detail.html', one_news=one_news)
    
    # 编辑新闻
    @user_blue.route('/edit_news', methods=['GET', 'POST'])
    def edit_news():
        news_id = request.args.get('news_id')
        one_news = News.query.get(news_id)
        if request.method == 'POST':
            cate_id = request.form.get('cate_id')
            title = request.form.get('title')
            content = request.form.get('content')
            try:
                one_news.cate_id = cate_id
                one_news.title = title
                one_news.content = content
                flash('新闻编辑成功!')
                return redirect(url_for('user.my_newss'))
            except Exception as e:
                flash('新闻编辑失败...')
        return render_template('web/edit_news.html', one_news=one_news)
    
    

    三、static 目录【admin和upload和web】

    1、admin/js——后台

    # login.js
    
    /**
     * Created by Dell on 2019/5/21.
     */
    
    function login() {
        var name = $('.name').val();
        var pass_hash = $('.pass_hash').val();
        $.ajax(
            {
                url:'/admin/login',     // 请求地址
                type:'post',        //请求方法
                data:{
                    'name':name,
                    'pass_hash':pass_hash
                },      // 传递的数据
                dataType:'json',     // 返回数据类型
                success:function (r) {
                    if (r.code==200){
                        window.location.href='/admin'
                    }else{
                        alert(r.message)
                    }
                }
            }
        )
    }
    

    2、upload——图片等

    举例:

    在这里插入图片描述

    3、web——前端【插件】

    在这里插入图片描述

    # login.js
    
    $(function () {
        code()
    });
    
    function code() {
        num = Math.random();     // 生成随机变量
        image_url = '/user/generate_code?num'+num;
        $('.code').attr('src', image_url);
    }
    
    

    四、templates 目录【admin和web】

    在这里插入图片描述

    1、admin——后台

    {# base.html #}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block script %}
            <script type="text/javascript" src="../../static/web/js/jquery.js"></script>
        {% endblock script %}
    </head>
    
    {% block content %}
        <div style="text-align: center">
            <a href="{{ url_for('admin.index') }}">后台首页</a> |
            <a href="{{ url_for('admin_news.news_list') }}">所有文章</a> |
            {% if session.get('admin_name') %}
                【{{ session.get('admin_name') }}】
                <a href="{{ url_for('admin.logout') }}">后台退出</a>
            {% else %}
                <a href="{{ url_for('admin.login') }}">后台登录</a> |
            {% endif %}
        </div>
        <hr>
    {% endblock content %}
    
    {# index.html #}
    
    {% extends 'admin/base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
        {% block script %}
            {{ super() }}
            <script type="text/javascript" src="../../static/web/js/login.js"></script>
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            <fieldset>
                <legend>网站统计</legend>
    
                <div style="float: left; width:25%;">
                    <fieldset>
                        <legend>分类总数</legend>
                        <h3>{{ g.cates | length }}</h3>
                    </fieldset>
                </div>
                <div style="float: left; width:25%;">
                    <fieldset>
                        <legend>文章总数</legend>
                        <h3>{{ newss | length }}</h3>
                    </fieldset>
                </div>
                <div style="float: left; width:25%;">
                    <fieldset>
                        <legend>用户总数</legend>
                        <h3>{{ users | length }}</h3>
                    </fieldset>
                </div>
                <div style="float: left; width:25%;">
                    <fieldset>
                        <legend>评论总数</legend>
                        <h3>{{ comments | length }}</h3>
                    </fieldset>
                </div>
    
            </fieldset>
            {% for message in get_flashed_messages() %}
                <span style="color: lightpink">{{ message }}</span><br>
            {% endfor %}
        {% endblock content %}
    </body>
    </html>
    
    {# login.html #}
    
    {% extends 'admin/base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>后台登录</title>
        {% block script %}
            {{ super() }}
            <script type="text/javascript" src="../../static/admin/js/login.js"></script>
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
    {#        <form action="" method="post">#}
    {#            用户名:<input type="text" name="name"><br>#}
    {#            密码:<input type="password" name="pass_hash"><br>#}
    {#            <input type="submit" value="登录">#}
    {#        </form>#}
    {#        {% for message in get_flashed_messages() %}#}
    {#            <span style="color: lightpink">{{ message }}</span><br>#}
    {#        {% endfor %}#}
    
            用户名:<input type="text" class="name"><br>
            密码:<input type="password" class="pass_hash"><br>
            <button οnclick="login()">登录</button>
        {% endblock content %}
    </body>
    </html>
    
    {# news_list.html #}
    
    {% extends 'admin/base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block script %}
            {{ super() }}
            <link rel="stylesheet" type="text/css" href="../../static/web/css/jquery.pagination.css">
            <script src="../../static/web/js/jquery.pagination.min.js"></script>
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            {% for news in newss.items %}
                {{ loop.index }}、{{ news.title }}<a href="{{ url_for('admin_news.audit_news', news_id=news.id) }}">审核</a><br>
            {% endfor %}
    
            <div id="page">
    
            </div>
            <script>
                $('#page').pagination(
                    {
                        currentPage:{{ newss.page }},
                        totalPage:{{ newss.pages }},
                        callback:function (page) {
                            window.location.href='?page=' + page
                        }
                    }
                )
            </script>
        {% endblock content %}
    </body>
    </html>
    
    {# audit_news.html #}
    
    {% extends 'admin/base.html' %}
    
    {% block content %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>审核{{ one_news.title }}</title>
        {% block script %}
            <script src="../../static/web/tinymce/js/tinymce/tinymce.min.js"></script>
            <script src="../../static/web/js/tinymce_setup.js"></script>
        {% endblock script %}
    </head>
    <body>
        {{ super() }}
        <div style="float: left;">
            <form action="" method="post">
                新闻分类:
                <select name= "cate_id" id="">
                    {% for cate in g.cates %}
                        {# 注意要加if条件选中当前文章所在分类 #}
                        <option value="{{ cate.id }}" {% if cate.id == one_news.cate_id %}selected{% endif %}>{{ cate.name }}</option>
                    {% endfor %}
                </select><br>
                新闻标题:<input type="text" name="title" value="{{ one_news.title }}"><br>
                新闻内容:<input type="text" name="content" value="{{ one_news.content }}" id="rich_content"><br>
                <input type="radio" value="0" name="status" {% if one_news.status==0 %}checked{% endif %}>未审核
                <input type="radio" value="1" name="status" {% if one_news.status==1 %}checked{% endif %}>通过
                <input type="radio" value="-1" name="status" {% if one_news.status==-1 %}checked{% endif %}>未通过 <br>
                <input type="submit" value="确认审核">
                </form>
                {% for message in get_flashed_messages() %}
                    <span style="color: red">{{ message }}</span><br>
                {% endfor %}
            </form>
        </div>
    </body>
    </html>
    {% endblock content %}
    

    2、web——前台

    {# base.html #}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block script %}
            <script type="text/javascript" src="../../static/web/js/jquery.js"></script>
        {% endblock script %}
    </head>
    
    {% block content %}
        <div style="text-align: center">
            <a href="{{ url_for('index.index') }}">首页</a> |
            {% for cate in g.cates %}
                (<a href="{{ url_for('news.news_list', cate_id=cate.id) }}">{{ cate.name }}</a>)
            {% endfor %}
            {% if session.get('name') %}
                【{{ session.get('name') }}】
                <a href="{{ url_for('user.user_info') }}">用户中心</a>
                <a href="{{ url_for('user.logout') }}">退出</a>
            {% else %}
                <a href="{{ url_for('user.reg') }}">注册</a> |
                <a href="{{ url_for('user.login') }}">登录</a> |
            {% endif %}
            {#  搜素一般用 GET 请求方式  #}
            <form action="{{ url_for('index.index') }}">
                <input type="text" value="{{ kw }}" name="kw" class="search">
                <input type="submit" value="搜索">
            </form>
        </div>
        <hr>
    {% endblock content %}
    
    {# user_base.html #}
    
    {% extends 'web/base.html' %}
    
    {% block content %}
        {{ super() }}
        <div style="float: left;width: 6%;height: 600px;">
            <a href="{{ url_for('user.user_info') }}">用户信息</a><br>
            <a href="{{ url_for('user.user_edit') }}">用户修改</a><br>
            <a href="{{ url_for('user.user_post') }}">发布新闻</a><br>
            <a href="{{ url_for('user.my_newss') }}">我的发布</a><br>
        </div>
    {% endblock content %}
    
    {# index.html #}
    
    {% extends 'web/base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block script %}
            <title>首页</title>
            {{ super() }}
            <link rel="stylesheet" type="text/css" href="../../static/web/css/jquery.pagination.css">
            <script src="../../static/web/js/jquery.pagination.min.js"></script>
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            {% for news in newss.items %}
                {{ loop.index }}、<a href="{{ url_for('news.news_detail', news_id=news.id) }}">{{ news.title }}</a><br>
            {% endfor %}
            {% for message in get_flashed_messages() %}
                <span style="color: red">{{ message }}</span><br>
            {% endfor %}
            <div id="page">
    
            </div>
            <script>
                $(function () {
                    $('#page').pagination(      // 通过$('#page')获取需要展示分页样式的位置
                        // 通过插件提供的方法.pagination来传递此方法需要传递的参数
                        {
                            currentPage:{{ newss.page }},   // 当前页
                            totalPage:{{ newss.pages }},    // 总页数
                            callback:function (current) {    // 让分页的页码链接起作用,需要传递当前页
                                var kw = $('.search').val();
                                window.location.href = '?page=' + current + '&kw=' + kw;      // 拼接点击的页码数
                            }
                        }
                    )
                })
            </script>
        {% endblock content %}
    </body>
    </html>
    
    {# reg.html #}
    
    {% extends 'web/base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>注册</title>
        {% block script %}
    
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            <form action="" method="post">
                用户名:<input type="text" name="name"><br>
                密码:<input type="password" name="pwd"><br>
                确认密码:<input type="password" name="repwd"><br>
                <input type="submit" value="注册">
            </form>
            {% for message in get_flashed_messages() %}
                <span style="color: darkblue">{{ message }}</span><br>
            {% endfor %}
        {% endblock content %}
    </body>
    </html>
    
    {# login.html #}
    
    {% extends 'web/base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
        {% block script %}
            {{ super() }}
            <script type="text/javascript" src="../../static/web/js/login.js"></script>
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            <form action="" method="post">
                用户名:<input type="text" name="name"><br>
                密码:<input type="password" name="pwd"><br>
                验证码:<input type="text" name="code"><br>
                <img src="/user/generate_code" οnclick="code()" class="code"/><br>
                <input type="submit" value="登录">
            </form>
            {% for message in get_flashed_messages() %}
                <span style="color: lightpink">{{ message }}</span><br>
            {% endfor %}
        {% endblock content %}
    </body>
    </html>
    
    {# user_info.html #}
    
    {% extends 'web/user_base.html' %}
    
    {% block content %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
         <title>用户中心</title>
        {% block script %}
    
        {% endblock script %}
    </head>
    <body>
        {{ super() }}
        用户名:{{ one_user.name }}<br>
        头像:<img style="width: 100px" src="../../static/upload/{{ one_user.pic }}">
    </body>
    </html>
    {% endblock content %}
    
    {# user_edit.html #}
    
    {% extends 'web/user_base.html' %}
    
    {% block content %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>用户修改</title>
        {% block script %}
    
        {% endblock script %}
    </head>
    <body>
        {{ super() }}
        <form action="" method="post" enctype="multipart/form-data">
            用户名:<input type="text" name="name" value="{{ one_user.name}}"><br>
            用户头像:<img style="width: 100px" src="../../static/upload/{{ one_user.pic }}"><br>
            修改头像:<input type="file" name="pic"><br>
            <input type="submit" value="确认修改">
        </form>
        {% for message in get_flashed_messages() %}
            <span style="color: red">{{ message }}</span><br>
        {% endfor %}
    </body>
    </html>
    {% endblock content %}
    
    {# user_post.html #}
    
    {% extends 'web/user_base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block script %}
            <title>发布新闻</title>
            <script src="../../static/web/tinymce/js/tinymce/tinymce.min.js"></script>
            <script src="../../static/web/js/tinymce_setup.js"></script>
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            <div style="float: left;">
                <form action="" method="post">
                    新闻分类:
                    <select name= "cate_id" id="">
                        {% for cate in g.cates %}
                            <option value="{{ cate.id }}">{{ cate.name }}</option>
                        {% endfor %}
                    </select><br>
                    新闻标题:<input type="text" name="title" value=""><br>
                    新闻内容:<input type="text" name="content" value="" id="rich_content"><br>
                    <input type="submit" value="确认发布">
                </form>
                {% for message in get_flashed_messages() %}
                    <span style="color: red">{{ message }}</span><br>
                {% endfor %}
            </div>
        {% endblock content %}
    </body>
    </html>
    
    {# my_newss.html #}
    
    {% extends 'web/user_base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>我的发布</title>
        {% block script %}
    
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            ID | 新闻标题 | 新闻分类 | 操作 <br>
            {% for my_news in my_newss %}
                {{ my_news.id }}、
                <a href="{{ url_for('user.user_news_detail', news_id=my_news.id) }}">{{ my_news.title }}</a>
                {{ my_news.one_cate.name }} |
                <a href="{{ url_for('user.edit_news', news_id=my_news.id) }}">编辑</a>
                <br>
            {% endfor %}
            {% for message in get_flashed_messages() %}
                <span style="color: red">{{ message }}</span><br>
            {% endfor %}
        {% endblock content %}
    </body>
    </html>
    
    {# edit_news.html #}
    
    {% extends 'web/user_base.html' %}
    
    {% block content %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>编辑{{ one_news.title }}</title>
        {% block script %}
            <script src="../../static/web/tinymce/js/tinymce/tinymce.min.js"></script>
            <script src="../../static/web/js/tinymce_setup.js"></script>
        {% endblock script %}
    </head>
    <body>
        {{ super() }}
        <div style="float: left;">
            <form action="" method="post">
                新闻分类:
                <select name= "cate_id" id="">
                    {% for cate in g.cates %}
                        <option value="{{ cate.id }}" {% if cate.id == one_news.cate_id %}selected{% endif %}>{{ cate.name }}</option>
                    {% endfor %}
                </select><br>
                新闻标题:<input type="text" name="title" value="{{ one_news.title }}"><br>
                新闻内容:<input type="text" name="content" value="{{ one_news.content }}" id="rich_content"><br>
                <input type="submit" value="确认编辑">
                </form>
                {% for message in get_flashed_messages() %}
                    <span style="color: red">{{ message }}</span><br>
                {% endfor %}
            </form>
        </div>
    </body>
    </html>
    {% endblock content %}
    
    {# news_detail.html #}
    
    {% extends 'web/base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block script %}
            <title>{{ one_news.title }}——详情页</title>
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            <h1>{{ one_news.title }}</h1>
            <fieldset>
                <legend>
                    新闻内容 |
                    {% if is_collect %}
                        <a href="{{ url_for('news.cancel_collect', news_id=one_news.id) }}">取消收藏</a>
                    {% else %}
                        <a href="{{ url_for('news.add_collect', news_id=one_news.id) }}">收藏</a>
                    {% endif %}
                </legend>
                {{ one_news.content | safe }}
            </fieldset>
            <fieldset>
                <legend>发表评论</legend>
                <form action="{{ url_for('news.add_comment', news_id=one_news.id) }}"  method="post">
                    <textarea name="content">
                        
                    </textarea><br>
                    <input type="submit" value="评论">
                </form>
            </fieldset>
            {% if comments | length >= 1 %}
                <fieldset>
                    <legend>所有评论</legend>
                    {% for comment in comments %}
                        {{ loop.index }}、{{ comment.content }}<br>
                    {% endfor %}
                </fieldset>
            {% endif %}
        {% endblock content %}
    </body>
    </html>
    
    {# news_list.html #}
    
    {% extends 'web/base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block script %}
            <title>分类列表页</title>
            {{ super() }}
            <link rel="stylesheet" type="text/css" href="../../static/web/css/jquery.pagination.css">
            <script src="../../static/web/js/jquery.pagination.min.js"></script>
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            {% for news in newss.items %}
                {{ loop.index }}、<a href="{{ url_for('news.news_detail', news_id=news.id) }}">{{ news.title }}</a><br>
            {% endfor %}
            <div id="page">
    
            </div>
            <script>
                $(function () {
                    $('#page').pagination(      // 通过$('#page')获取需要展示分页样式的位置
                        // 通过插件提供的方法.pagination来传递此方法需要传递的参数
                        {
                            currentPage:{{ newss.page }},   // 当前页
                            totalPage:{{ newss.pages }},    // 总页数
                            callback:function (current) {    // 让分页的页码链接起作用,需要传递当前页
                                window.location.href = '?page=' + current + '&cate_id=' + {{ cate_id }};      // 拼接点击的页码数
                            }
                        }
                    )
                })
            </script>
        {% endblock content %}
    </body>
    </html>
    
    {# user_news_detail.html #}
    
    {% extends 'web/user_base.html' %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{{ one_news.title }}——详情</title>
        {% block script %}
    
        {% endblock script %}
    </head>
    <body>
        {% block content %}
            {{ super() }}
            <div style="float: left; background-color: lightgray; color: gray">
                新闻标题:{{ one_news.title }}<br>
                新闻标题:{{ one_news.content | safe }}
            </div>
        {% endblock content %}
    </body>
    </html>
    

    五、utils 目录【插件】

    在这里插入图片描述

    # common.py
    
    """ Todo:公共方法——拦截器【拦截器:用户登录之后才可以访问,否则跳转到首页】 """
    
    from flask import session, redirect, url_for
    from functools import wraps
    
    
    # 前台的拦截器
    def is_login(func):
        @wraps(func)
        def inner():
            if not session.get('id'):
                return redirect(url_for('index.index'))
            return func()
        return inner
    
    
    # 后台的拦截器
    def is_admin_login(func):
        @wraps(func)
        def inner():
            if not session.get('admin_id'):
                return redirect(url_for('admin.login'))
            return func()
        return inner
    

    最后在start.py文件下启动程序,出现以下界面:

    在这里插入图片描述

    接下来就可以根据需求进行相关操作。

    我们可以配合使用navicat等可视化工具,与数据库进行连接,以便及时查看数据的变动。

    展开全文
  • PHP新闻系统开发流程

    2016-03-09 12:02:00
    PHP新闻系统开发流程一、系统总体设计 (一)系统功能描述和功能模块划分 (二)系统流程分析 (三)系统所用文件二、数据库设计 (一)创建数据库 (二)设计表结构三、新闻发布模块开发 (一)新闻首页 (二)新闻...

    PHP新闻系统开发流程
    一、系统总体设计
    (一)系统功能描述和功能模块划分
    (二)系统流程分析
    (三)系统所用文件
    二、数据库设计
    (一)创建数据库
    (二)设计表结构
    三、新闻发布模块开发
    (一)新闻首页
    (二)新闻详细页面及其他各类详细页面(内容页)
    (三)新闻所有页面及其他各类所有页面(列表页)
    四、新闻管理模块开发
    (一)新闻管理首页
    (二)新闻插入页面
    (三)新闻修改页面
    (四)新闻删除确认页面
    (五)新闻删除页面

    转载于:https://www.cnblogs.com/jsben/p/5257612.html

    展开全文
  • 桐桐的新闻系统 题目大意: 有n个人,每个人有自己的ID和收新闻的间隔,问前k次发送新闻是分别发给谁的
  • 新闻系统结构功能图

    千次阅读 2011-10-13 09:58:35
    新闻系统功能结构图(UML建模)  新闻发布系统 n 前台新闻显示模块 Ø 新闻首页 Ø 显示新闻栏目 Ø 查看新闻列表 Ø 查看详细新闻 Ø 搜索新闻 n 后台新闻管理模块 Ø 发布新闻 Ø 编辑新闻 ...
  • 基于Spring+SpringMVC+MyBatis SSM框架的简易新闻系统前后台源码及sql文件,可用于学习参考。导入eclipse发布后即可。前端使用bootstrap。 前台地址:http://localhost:8080/News/news/news_index.action 后台地址...
  • thinkphp+bootstrap制作的新闻系统

    千次阅读 2016-01-25 14:32:51
    thinkPHP+bootstrap制作的简单的新闻系统.
  •  JSP新闻系统之三后台显示页面 原创 2016年11月05日 11:41:25 标签:新闻 /jsp / 729
  • JSP、Servlet实战:团队开发新闻系统(七)腾讯新闻爬虫思路:使用WebCollector爬虫框架,由入口URL开始爬取,爬取到符合正则表达式的URL就开始分析页面,提取出其中的新闻标题,摘要,内容,作者等信息,封装成News...
  • myvoice新闻系统

    2008-05-30 21:46:00
    自己做了个jsp的新闻系统。myvoice新闻系统。 采用struts2作为view和逻辑处理,ibatis作为数据层。 数据库采用sql server 2000. tomcat6. 有空时慢慢更新完善。 最新下载地址: ...
  • 牛腩新闻系统(一)——UML、数据库设计

    千次阅读 热门讨论 2015-06-04 08:42:28
    牛腩新闻系统(一)——UML、数据库设计 一、初识牛腩系统    牛腩(Brisket)即牛腹部及靠近牛肋处的松软肌肉,是指带有筋、肉、油花的肉 块,这是一种统称。若依部位来分,牛身上许多地方的肉都可以叫做牛腩,...
  • 新闻系统分析

    2011-11-08 19:31:12
    讨论 系统 分工    用户包括普通、管理员;  普通用户可以浏览新闻;  普通用户可以注册;  管理员增加新闻;  管理员删除新闻;  管理员增加分类;    前台新闻显示模块  新闻首页  显示...
  • 牛腩新闻系统(五)——一些小技巧

    千次阅读 热门讨论 2015-06-25 22:06:20
    牛腩新闻系统(五)——一些小技巧 1、设置代码文档的格式:  编辑——设置文档格式Ctrl+k,Ctrl+D 2、调试不启动  调试——开始调试不启动 可以自定义工具栏:  鼠标放工具栏中右击——自定义——命令——...
  • 新动力商务网新闻系统

    千次下载 2002-06-20 00:00:00
    一个采用mysql的新闻系统,包括后台程序。
  • android 新闻系统客户端,服务器端采用JSP Servlet 实现,开发工具,Eclipse android2.3.3 API live 10 ,服务端在MyEclipse上运行调试,数据库mysql5.1 新闻导航 显示,新闻内容显示,新闻评论,分享,和收藏,新闻...
  • JUULUU JAVA开源新闻系统KgcmsV5.0.1发布

    千次阅读 2014-04-06 11:16:26
    摘要 广州JUULUU 国内JAVA开源新闻系统KgcmsV5.0.1发布,提供360云盘最新下载服务,JUULUU官网不再提供下载支持。增加GRES WEB UI库,增加蓝色标准模板,改进新闻发布体验,增加新闻系统标签库,基于PAGE COMMAND...
  • 牛腩新闻系统(四)——类生成器生成实体代码

    千次阅读 热门讨论 2015-06-25 11:42:39
    牛腩新闻系统(三)——类生成器生成实体代码    之前代码基本都是自己写,但是有没有想过,如果能想EA图那样,画好基本的类图, 代码就出来了,那该多好呀!    嗯,这真就有这么一款小软件,能自动帮助我们生成...
  • 为啥我在网上找的index.php,admin_left.php等五个文件写了之后,我登陆之后不出现后台左侧的后台管理的界面,任然是登陆界面?这个新闻系统的后台咋写呢?求大牛解答。谢谢!1
  • 国产Java开源新闻系统Kgcms v5.0.1发布。 Kgcms金刚新闻内容系统,是一款国产中文JavaCMS,Kgcms第一版始于2008年,采用 J2EE(JUULUU strutsEX+hiberante+yui)、mysql技术,功能强大稳定,支持国内主流IDC空间...
  •  上一篇文章《牛腩新闻系统---发布与部署(一)之 发布》 中谈到了牛腩新闻系统的发布,接下来需要部署到网站上,输入网址就可以打开我们的新闻系统,下面是具体的操作方法。 一、安装IIS 1.win+R,输入...
  • 牛腩新闻系统(三)——DAL层的开发之后

    千次阅读 热门讨论 2015-06-21 20:13:51
    牛腩新闻系统(三)—DAL层的开发之后  于DAL层的开发以后,开始编写BLL的代码,这次没有像机房收费系统那样,用了很多工 厂,设计模式,接口之类的.那时候就是为了学习.这次是为了使用,所以我们从使用出发. 用BLL直接...
  • 牛腩新闻系统发布

    热门讨论 2016-12-27 21:00:28
    新闻发布系统终于做完了,但是最后的发布环节也是十分重要的,掌握IIS网站发布是我们要掌握的能力之一。 上一篇博客讲解了IIS的环境与添加网站,但是添加网站之后还是会有许多意想不到的问题: 问题一: 【原因...
  • 新闻系统-错误-存在二义性

    千次阅读 热门讨论 2015-05-27 19:05:25
    在敲牛腩新闻系统时,需要直接复制一个addnews.aspx,然后直接改名为修改新闻modnews.aspx,但粘贴之后重新生成解决方案,就出现了17个错误,刚开始我以为是自己操作有问题,就删除modnews.aspx,但还是不行,这就...
  • 基于SSH(spring+struts2+hibernate)的新闻系统(二)分类管理 在搭建完环境之后就可以进行系统的开发,新闻系统下我们是前后端分离的。前端用于显示新闻、用户登录、增加评论等;后端的新闻的管理、分类的管理、...
  • 牛腩新闻系统(二)——原型图、数据库文档  之前建好数据库,进行外键的设置和原型图的构件,常常听有经验的软件设计师说,一 个项目经理,如果计划花四个月完成一个软件,那么研究数据可和原型图需要花上两个 月...
  • Django:DDTCMS新闻系统规划设计与实验

    千次阅读 2011-07-23 14:05:04
    DDTCMS新闻系统规划设计与实验目的首先开发新闻系统的目的需求分析与功能规划基本的CRUDCreate ReadUpdateDelete高级功能压缩包添加新闻压缩包内的文件形式:新闻文本.txt/新闻文本.doc/新闻文本.rtf/新闻文本.xml/...
  • Yii实例之开发简单新闻系统

    千次阅读 2013-07-03 15:10:29
    Yii实例之开发简单新闻系统之二Controller操作 最近比较忙, 项目快上线了, 每天不停的改bug, 调试, 博文基本没动, 群里很多朋友都在等我的Yii开发系列的文章, 在这里向大家说声抱歉了, 感谢大家的支持, 这个系列...
  • JSP、Servlet实战:团队开发新闻系统(二)团队分工因为是新闻系统,初步设计了四个功能模块: User模块 新闻模块 评论模块 后台 准备工作: 建立数据库 “` /* SQLyog Ultimate v11.24 (32 bit) MySQL - 5.5.47...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,950
精华内容 12,380
关键字:

新闻系统