MVC—Flask网站制作(14)
Posted 光荣之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC—Flask网站制作(14)相关的知识,希望对你有一定的参考价值。
新书
速递
吴老的java版《selenium webdriver 实战宝典》和python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。
文 | 远山近海
Flask网站制作框架
安装:pip install Flask
flask的MVC
MVC概念
可插拔的视图
-
在MVC中,通常会把一个模块(多个页面的多个子功能)放到一个包中,如所有与登录和注册相关功能放到一个包中。 在每个包中,都有一个自己本包的视图文件 -
在本包的视图文件中,会把本包内所有的视图函数放到一个文件内,但这个文件仅限于放视图函数,启动项目不在此文件中 -
要有一个主文件,用于启动项目
基于类的视图
views.py
# coding=utf-8
from flask.views import View
from flask import render_template,request
class login(View):
methods = ["GET","POST"]
def dispatch_request(self):
if request.method=="GET":
pass
else:
pass
return render_template("/login.html/")
class zhuce(View):
methods = ["GET", "POST"]
def dispatch_request(self):
if request.method=="POST":
pass
else:
pass
return render_template("/zhuce.html/")
main.py
# coding=utf-8
from flask import Flask
from login.views import *
app = Flask(__name__) # 创建了一个Flask类的实例
app.secret_key="123"
app.add_url_rule("/login/",view_func=login.as_view("login"))
app.add_url_rule("/zhuce/",view_func=zhuce.as_view("zhuce"))
if __name__ == '__main__':
app.debug = True
app.run(port=8080)
-
主文件里只为视图函数设置URL规则 -
app.add_url_rule中的/login/和/zhuce/均代表各自的URL -
view_func=login.as_view("login"))或view_func=login.as_view("zhuce"))中的login和zhuce代表的是视图函数里类的函数名,也叫中节点,相当于不使用MVC时视图函数的名称,由于在基于类的视图中,类里的视图函数的名称是统一的,没有自己独立的名称,所以要在主函数里指定一个其自己的名称,在页面中,如果需要跳转到该页面,href后面写的就是主函数里指定的函数名
login.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
<link href="dist/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<h3>登录页面</h3>
<script src="dist/jquery.min.js"></script>
<script src="dist/js/bootstrap.js"></script>
</body>
</html>
zhuce.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
<link href="dist/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<h3>注册页面</h3>
<script src="dist/jquery.min.js"></script>
<script src="dist/js/bootstrap.js"></script>
</body>
</html>
运行结果
基于方法的视图
views.py
# coding=utf-8
from flask.views import MethodView
from flask import render_template,request
class login(MethodView):
def get(self):
return render_template("/login.html/")
def post(self):
pass
class zhuce(MethodView):
def get(self):
return render_template("/zhuce.html/")
def post(self):
pass
-
同样是每个类对应一个页面,且类名与页面名要一致 -
每个类都要继承自flask.views.MethodView -
类里只有两个方法,get和post,分别对应了get请求和post请求
以上是关于MVC—Flask网站制作(14)的主要内容,如果未能解决你的问题,请参考以下文章
Flask网站搭建:Ubuntu 14.04 sever (阿里云64bit) 部署 flask + uWSGI + Ngnix
ASP.net MVC 代码片段问题中的 Jqgrid 实现