zoukankan      html  css  js  c++  java
  • Flask项目实战:创建电影网站-创世纪(1)

    以后要养成写博客的习惯,用来做笔记。本人看的东西很多很杂,但因为工作中很少涉及,造成看了之后就忘,或者看了就看了,但是没有融入的自己的知识体系里面。

    写博客一方面是做记录,一方面是给这段时间业余学习的一个总结。

    首先贴一下我的git地址,也是这个项目的源码:https://github.com/aaja/pythonflask-movies

    本项目来源慕课网。

    参照这个代码

     https://github.com/mtianyan/movie_project

    #1.项目结构创建#

    # 2.入口设置,以及蓝图

    ====manage.py 项目入口
    # coding:utf8
    from app import app
    
    if __name__ =='__main__':
        app.run();

    ====app目录下__init__.py
    创建蓝图,初始化一些配置,设置404.(我理解蓝图就是个大路由,错了就错了,反正不懂)
    # _*_ coding: utf-8 _*_

    from flask import Flask,render_template
    from flask_sqlalchemy import SQLAlchemy
    import pymysql

    app = Flask(__name__)
    app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql+pymysql://root:root@127.0.0.1:3306/movie'
    #如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] =True
    app.config["SECRET_KEY"] = "7a9f1b6321d347e09485695eb4139ac5"
    app.debug = True
    db = SQLAlchemy(app)


    from app.home import home as home_blueprint
    from app.admin import admin as admin_blueprint

    app.register_blueprint(home_blueprint)
    app.register_blueprint(admin_blueprint, url_prefix="/admin")
    @app.errorhandler(404)
    def page_not_found(error):
    return render_template('home/404.html'),404
    ====

    # 3.制作前段页面

    `home/views.py`

    # _*_ coding: utf-8 _*_
    
    
    from . import home
    from flask import render_template,redirect,url_for
    
    @home.route("/")
    def index():
        return render_template("home/index.html")
    
    @home.route("/login/")
    def login():
        """
        登录
        """
        return render_template("home/login.html")
    
    
    @home.route("/logout/")
    def logout():
        """
        退出登录
        """
        # 重定向到home模块下的登录。
        return redirect(url_for('home.login'))
    

    然后templates目录下有对应的界面;

    #4.制作后台界面

      

    # _*_ coding: utf-8 _*_
    
    
    from . import admin
    from flask import render_template,redirect,url_for,flash,session,request
    from app.admin.forms import LoginForm,TagForm
    from app.modules import Admin,Tag
    from functools import wraps
    from app import db
    
    def admin_login_req(f):
        @wraps(f)
        def decorated_function(*args,**kwargs):
            if "admin" not in session :
                return redirect(url_for("admin.login",next=request.url))
            return f(*args,**kwargs)
        return decorated_function
    
    @admin.route("/")
    @admin_login_req
    def index():
        return render_template('admin/index.html')
    
    @admin.route('/login/',methods=["POST","GET"])
    def login():
        form = LoginForm()
        if form.validate_on_submit():
            data = form.data
            admin = Admin.query.filter_by(name=data['account']).first()
            if not (admin and admin.check_pwd(data['pwd'])):
                flash("账号或密码错误")
                return redirect(url_for('admin.login'))
            session['admin'] = data['account']
            return redirect(url_for('admin.index'))#request.args.get('next') or
        return render_template('admin/login.html',form = form)
    
    @admin.route('/logout/')
    def logout():
        session.pop('admin',None)
        return redirect(url_for('admin.login'))
    

    #5.模板代码中基本结构都是html里面嵌入某语言代码;

    like下面

    {% extends 'admin/admin.html' %}
    
    {%block content%}
    {% endblock %}
    {%block js%}
    {% endblock %}
    
    {{url_for('home.user')}}
    {{ url_for('static',filename='')}}
    

      

    上面admin.html留下内容空白

      {%block content%}
      {% endblock %}

    ,然后在页面里面

      {%block content%}
        helloworld,这里加入的东西会插入到上面留的空里面。   {% endblock %}
  • 相关阅读:
    Mybatis 原始dao CRUD方法
    JQuery的焦点事件focus() 与按键事件keydown() 及js判断当前页面是否为顶级页面 子页面刷新将顶级页面刷新 window.top.location
    使用actionerror做失败登录验证
    Java项目中的下载 与 上传
    shiro框架 4种授权方式 说明
    javascript 中数组的创建 添加 与将数组转换成字符串 页面三种提交请求的方式
    序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询
    Spring data JPA 理解(默认查询 自定义查询 分页查询)及no session 三种处理方法
    orcal 数据库 maven架构 ssh框架 的全注解环境模版 maven中央仓库批量删除lastupdated文件后依然是lastupdated解决方法 mirror aliyun中央仓库
    EasyUI加zTree使用解析 easyui修改操作的表单回显方法 验证框提交表单前验证 datagrid的load方法
  • 原文地址:https://www.cnblogs.com/wyy5552/p/8506262.html
Copyright © 2011-2022 走看看