16.登录功能完成 (1)front/forms.py class SigninForm(BaseForm): telephone = StringField(validators=[Regexp(r'1[3578]\d{9}', message='请输入正确格式的手机号码')]) password = StringField(validators=[Regexp(r'[0-9a-zA-Z_\.]{6,15}', message='请输入正确格式的密码')]) remember=St
14.1注册完成跳到上一个页面 (1)front/form.py # front/forms.py __author__ = 'derek' from ..forms import BaseForm from wtforms import StringField from wtforms.validators import Regexp,ValidationError,EqualTo from utils import zlcache class SignupForm(BaseForm): te
1.1.项目结构搭建 (1)创建flask项目Perfect_bbs,然后搭建项目结构如下: (2)构建蓝图 cms/views.py # cmd/views.py from flask import index(): return 'front index' front/init.py from .views import bp config.py DEBUG = True Perfect_bbs.py # Perfect_bbs.py from flask import Flask from apps.cms import bp as cms_bp from apps.front import bp config.py __author__ = 'derek' DEBUG = True DB_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/bbs # Perfect_bbs.py __author__ = 'derek' from flask import Flask from apps.cms import bp as cms_bp from
目录 BBS 项目(四) 首页布局 个人头像显示 个人站点路由设计 个人站点页面设计 base.html site.html 左侧过滤功能 404.html BBS 项目(四) 首页布局 <!
10.1.客户端权限验证功能完成 (1)cms/cms_profile 显示当前用户的角色和权限
BBS项目(一) 项目开发流程 项目分类 针对互联网用户:抖音,淘宝····· 针对公司内部:后台管理系统··· 针对给用户定制软件:比如肯德基··· 项目开发模式分类 瀑布开发模式:通俗理解为软件/项目全开发完了测试维护更新 用户提出需求 设计原型图(类似流程图,产品经理设计) 美工切图 技术选型,数据库、架构设计 前后台开发(协同开发:git) 对接联调 运维上线(测试环境) 测试人员测试 修改Bug(开发) 上线运行 迭代更新 BBS 作者头像,点赞数,广告位) 个人站点(左侧侧边栏过滤,inclusion_tag) 文章页面(文章展示,点赞,点踩···) 后台管理(展示个人所有文章,文章增删查改,防止xss攻击) 修改密码,头像·· BBS 4 3 1 就是写的不好 1 比如你评论了写的真好,别人就回来评论你的评论,写的不好····这其实是一种一对多的关系,外键指向自己 表关系图示 以上是BBS
9.1.权限和角色模型定义 (1)cms/models class CMSPermission(object): ALL_PERMISSION = 0b11111111 # 1.访问者的权限 VISITOR = 0b00000001 # 2.管理帖子的权限 POSTER = 0b00000010 # 3.管理评论的权限 COMMENTER = 0b00000100 # 4.管理板块的权限 BOARDER = 0b00001000
11.1.前台用户模型创建 (1)apps/front/models.py 首先安装:pip install shortuuid class FrontUser(db.Model): __tablename__ = "front_user" id = db.Column(db.String(100),primary_key=True,default=shortuuid.uuid) telephone = db.Column(db.String(11),nullable=False,u
15.1.登录界面完成 (1)front/signbase.html {% from 'common/_macros.html' import static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="csrf-token" content="{{ csrf_token() }}"> <title>{% block title %}{% endblock %}</titl
1 评论的render显示 1.1 后端 def article_detail(request, username, id): article = models.Article.objects.filter(id=id).first() comment_list=article.commit_set.all() return render(request, 'article.html', {'article': article, 'username': username,'co
目录 BBS项目(二) ORM 创建相关表 表模型 修改admin样式 Simple-UI 注册表添加数据 注册forms类编写 注册功能前端搭建 头像实时显示功能实现 BBS项目(二) 可以在本地写或虚拟环境 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'bbs 如果不迁移就报错 ValueError: Dependency on app with no migrations: account 表模型 修改admin样式 '''创建超级用户''' manage.py@BBS
BBS项目(三) 注册forms类编写局部钩子和全局钩子 '''forms校验''' from django import forms from django.forms import widgets width, height), (255, 255, 255)) # 创建Font对象: # 创建ttf格式文件 font = ImageFont.truetype(r'E:\BBS
2.1.cms后台登录界面完成 (1)templates/cms/cms_login.html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <
8.1.发送邮箱验证码功能 (1)cms/resetemail.html {% from 'common/_macros.html' import static %} {% block head %} <script src="{{ static('cms/js/resetemail.js')}}"></script> {% endblock %} <input type="email" name="email" placeholder="新邮箱" class="form-control">
运行项目,浏览器访问:http://127.0.0.1:5000/captcha/,可以看到生成的随机验证码
5.1.cms后台修改密码功能完成 (1)新建app/forms.py # app/forms.py from wtforms import Form class BaseForm(Form): def get_error(self): message = self.errors.popitem()[1][0] return message (2)cms/forms.py # cmd/forms.py from wtforms import StringFiel
18.首页轮播图实现 (1)front/css/front_base.css .main-container{ width: 990px; margin: 0 auto; overflow: hidden; } .lg-container{ width: 730px; float:left; } .sm-container{ width: 250px; float:right; } (2)front_base.html <link rel="style
30.显示评论和添加评论功能完成 (1)apps/models.py class CommentModel(db.Model): __tablename__='comment' id=db.Column(db.Integer,primary_key=True,autoincrement=True) content=db.Column(db.Text,nullable=False) create_time=db.Column(db.DateTime,default=dateti
19.1.cms轮播图管理页面布局 (1)cms/cms_base.html
20.1.cms添加轮播图后台逻辑代码完成 (1)apps/models.py from exts import db from datetime import datetime class BannerModel(db.Model): __tablename__ = 'banner' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(255), n