当前位置: 首页 > news >正文

做网站如何防止被骗/济南专业做网站

做网站如何防止被骗,济南专业做网站,申请网页空间的网站,现在开网站做微商赚钱吗现在所有的Py代码均写在default.py文件中,很明显这种方法下,一旦程序变的负责,那么无论对于开发和维护来说,都会带来很多问题。Flask框架并不强制要求项目使用特定的组织结构,所以这里使用的组织结构并不一定与其它项目…

现在所有的Py代码均写在default.py文件中,很明显这种方法下,一旦程序变的负责,那么无论对于开发和维护来说,都会带来很多问题。

Flask框架并不强制要求项目使用特定的组织结构,所以这里使用的组织结构并不一定与其它项目中相同。

根据default.py中的代码,大体可分为三类:表单模型,数据模型,视图方法,所以模型也网这类中来区分。所以按照其他语言(java)得来的经验,每个类为一个py文件,放到相应的文件夹中

在单个文件中,所有的配置都写在单个的文件里,而在进行多文件重构之后,还这样做很明显是不合适的,所以创建一个独立的config文件很有必要:

class Config:

SECRET_KEY="Niu_blog String"

SQLALCHEMY_DATABASE_URI='mysql://root:1234@localhost/cblog'

SQLALCHEMY_COMMIT_ON_TEARDOWN=True

LOGIN_PROTECTION="strong"

LOGIN_VIEW="login"

然后是初始化文件(app/__init__.py):

from flask import Flask

from flask_bootstrap import Bootstrap

from flask_sqlalchemy import SQLAlchemy

from flask_login import LoginManager

import pymysql

pymysql.install_as_MySQLdb()

from config import Config

bootstrap = Bootstrap()

db = SQLAlchemy()

login_manager=LoginManager();

def create_app():

app = Flask(__name__)

app.config.from_object(Config)

bootstrap.init_app(app)

login_manager.init_app(app)

login_manager.session_protection=Config.LOGIN_PROTECTION

login_manager.login_view=Config.LOGIN_VIEW

db.init_app(app)

return app

进一步模块化还要使用蓝本,蓝本的功能有些类似 asp.net mvc中的area,将不同模块的视图方法整合到一起,并通过url进行区分,首先入口即index页面定义为main蓝本,方法如下:

创建main文件夹

文件夹内新建蓝本初始化文件__init__.py

创建视图方法文件view.py

主蓝本内创建错误页视图方法errors.py

初始化文件代码如下:

from flask import Blueprint

main=Blueprint("main",__name__) # 创建蓝本

from . import errors,views

目前,视图方法文件只有一个index方法,代码如下:

from flask import render_template

from . import main

@main.route("/")

def index():

return render_template("index.html",site_name='myblog')

错误页代码略

主蓝本的的URL不使用前缀

然后登陆注册登出页集中到权限蓝本(auth),权限蓝本初始化代码如下:

from flask import Blueprint

auth=Blueprint("auth",__name__)

from . import views

视图主要为之前已经完成的视图迁移过来:

from . import auth

from .. import db,login_manager

from ..forms.LoginForm import LoginForm(*)

from ..models.User import User (*)

from flask_login import login_user,logout_user

from flask import render_template,flash,redirect,url_for

@auth.route("/login",methods=["GET","POST"])

def login():

form = LoginForm()

print(url_for("main.index"))

if form.validate_on_submit():

username = form.username.data

password = form.password.data

print(User)

user = User.query.filter_by(username=username, password=password).first()

if user is not None:

login_user(user, form.remember_me.data)

print(url_for("main.index"))

return redirect(url_for("main.index"))

else:

flash("您输入的用户名或密码错误")

return render_template("/auth/login.html", form=form) # 返回的仍为登录页

return redirect(url_for("main.index"))

return render_template("/auth/login.html",form=form)

@auth.route("/logout",methods=["GET","POST"])

def logout():

logout_user()

return redirect(url_for("main.index"))

@login_manager.user_loader

def load_user(user_id):

return User.query.get(int(user_id))

注意打星号标记的两行,一定要注意py文件和py对象,必须在文件内在import对象

其中LoginForm文件内的代码如下:

from flask_wtf import FlaskForm

from wtforms import StringField,PasswordField,SubmitField,BooleanField

from wtforms.validators import DataRequired

class LoginForm(FlaskForm):

username=StringField("请输入用户名",validators=[DataRequired()])

password=PasswordField("请输入密码")

remember_me=BooleanField("记住我")

submit=SubmitField("登录")

User文件内的代码如下:

from flask_login import UserMixin

from .. import db

class User(UserMixin,db.Model):

__tablename__="users"

id=db.Column(db.Integer,primary_key=True)

username=db.Column(db.String(50),unique=True,index=True)

password=db.Column(db.String(50))

nickname=db.Column(db.String(50))

email=db.Column(db.String(100))

birthday=db.Column(db.DateTime)

gender=db.Column(db.Integer)

remark=db.Column(db.String(200))

role_id=db.Column(db.Integer,db.ForeignKey("roles.id"))

注意一下flask插件的导入方式都由flask.ext.*改为新版本推荐的flask_*这种方式,在此感谢博友 治电小白菜的提醒。

当然,最终还要对蓝本进行注册,所以最终create_app方法的代码为:

def create_app():

app = Flask(__name__)

app.config.from_object(Config)

bootstrap.init_app(app)

login_manager.init_app(app)

login_manager.session_protection=Config.LOGIN_PROTECTION

login_manager.login_view=Config.LOGIN_VIEW

db.init_app(app)

from .main import main as main_blueprint

from .auth import auth as auth_blueprint

app.register_blueprint(main_blueprint) #无url前缀

app.register_blueprint(auth_blueprint,url_prefix="/auth") #url前缀为/auth

return app

最后修改的是启动运行的方式,新建一个manager.py文件,配置启动代码如下:

from app import create_app, db

from flask_script import Manager,Shell

from flask_migrate import Migrate,MigrateCommand

from app.models.User import User

from app.models.Role import Role

import pymysql

pymysql.install_as_MySQLdb()

app=create_app()

manager=Manager(app);

migrate = Migrate(app, db)

def make_shell_context():

return dict(app=app,db=db,User=User,Role=Role) #注册shell命令

manager.add_command("db", MigrateCommand) #新增db命令用于数据库迁移

manager.add_command("shell" ,Shell(make_context=make_shell_context()))

if __name__ =='__main__':

manager.run()

用最土的方式,跑跑运行一下,运行结果与之前仅有default.py的时候相同,此时系统目录如下,仅供参考:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

http://www.lbrq.cn/news/1408087.html

相关文章:

  • 做网站要学会那些/关键词首页排名优化价格
  • 怎么用wordpress做网站/如何去推广一个app
  • html做游戏网站/qq营销软件
  • 学做面包的网站/yandex网站推广
  • 桐庐做网站/最近时事新闻热点事件
  • 手机端网站设计制作案例/关键词优化技巧有哪些
  • 石家庄做网站建设的公司排名/网络营销策划方案怎么写
  • 关于做网站/长沙做网站推广
  • 仿网站出售/电商线上推广渠道
  • 网站建设中模版/广告资源网
  • 小企业网站建设哪家便宜/图们网络推广
  • 做宣传网站买什么云服务器/开发一个app需要多少钱?
  • 深圳有做网站的公司660元/美国站外推广网站
  • 公司网络推广怎么做/seo系统培训课程
  • 做网站费用怎么付/推广手段和渠道有哪些
  • 绍兴做网站哪家好/全球新闻最新消息
  • 石家庄小学网站建设/谁有推荐的网址
  • 企业网站建设之域名篇/推广策划方案怎么写
  • inurl 湖北网站建设/惠州网络营销
  • iview可以做门户网站吗/正规手游代理平台有哪些
  • 广州网站优化服务/cilimao磁力猫
  • 动态网站建设网/体验式营销案例
  • 网站制作哪个软件/搜索引擎有哪些软件
  • 网站留言板模板/问卷调查网站
  • 购物网站开发技术/手机怎么做网站免费的
  • 加盟营销型网站制作/互联网推广话术
  • 网站中文字内容左右切换的js代码/游戏搜索风云榜
  • 自己如何做网站建设/做网络销售感觉自己是骗子
  • joomla 网站建设/百度网址大全官网旧版
  • 帝国cms登录网站/全网营销系统怎么样
  • axure chrome 浏览器插件的使用
  • rust 从入门到精通之变量和常量
  • 【Python面试题】写一个用元类(metaclass)实现API接口自动注册的Demo。以及装饰器在项目中典型应用场景。
  • 剧本杀小程序系统开发:保障游戏公平,营造健康娱乐环境
  • Orange的运维学习日记--45.Ansible进阶之文件部署
  • Makefile介绍(Makefile教程)(C/C++编译构建、自动化构建工具)