安装 Django
import django
print(django.get_version())
创建项目
django-admin startproject mysite
这些目录和文件的用处是:
- 最外层的
mysite/
根目录只是你项目的容器, 根目录名称对 Django 没有影响,你可以将它重命名为任何你喜欢的名称。 manage.py
: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin 和 manage.py 获取所有manage.py
的细节。- 里面一层的
mysite/
目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如mysite.urls
). mysite/__init__.py
:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。如果你是 Python 初学者,阅读官方文档中的 更多关于包的知识。mysite/settings.py
:Django 项目的配置文件。如果你想知道这个文件是如何工作的,请查看 Django 配置 了解细节。mysite/urls.py
:Django 项目的 URL 声明,就像你网站的“目录”。阅读 URL调度器 文档来获取更多关于 URL 的内容。mysite/asgi.py
:作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口。阅读 如何使用 ASGI 来部署 了解更多细节。mysite/wsgi.py
:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。阅读 如何使用 WSGI 进行部署 了解更多细节。
然后进入site目录
cd site
py manage.py runserver
更换端口
py manage.py runserver 8080
py manage.py runserver 0.0.0.0:8000
服务器运行
py manage.py runserver 0.0.0.0:12345
创建投票应用
项目 VS 应用
项目和应用有什么区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。
请确定你现在处于 manage.py
所在的目录下,然后运行这行命令来创建一个应用:
py manage.py startapp polls
编写第一个视图
让我们开始编写第一个视图吧。打开 polls/views.py
,把下面这些 Python 代码输入进去:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它——这就是我们需要 URLconf 的原因了。
为了创建 URLconf,请在 polls 目录里新建一个 urls.py
文件。你的应用目录现在看起来应该是这样:
在 polls/urls.py
中,输入如下代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
安装Flask
模板:
from flask import Flask, render_template, request
import fangfa
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST' and request.form['text']:
text = request.form['text']
print(text)
return render_template('index.html')
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
<form method="post">
<textarea class="textarea1" name="text" placeholder="Enter text here"></textarea>
选择类型:<select name="choice">
<option value="option1">option1</option>
<option value="option2">option2</option>
</select>
<button type="submit">Submit</button>
</form>
动态URL参数类型
from flask import Flask
app = Flask(__name__)
@app.route('/str/<id>')
def r_str(id):
print(f'接收到了{id}文章')
print(type(id))
return f'返回{id}的文章'
post、get请求
Flask中的网页数据url设置、数据传递和数据显示相关设置_flask中url加后缀.html_水月灯花的博客-CSDN博客
https://www.cnblogs.com/J-JUN/p/16166052.html
https://www.cnblogs.com/yoyoketang/p/16610827.html
Flask模板渲染与Get和Post请求详细介绍_python_脚本之家
【flask进阶】Flask实现自定义分页(python web通用)-阿里云开发者社区
python flask音频流/文件服务
python flask音频流/文件服务_xp5xp6的博客-CSDN博客
常见问题:
图表不加载:
1.js没有加载(特别是map,可能会缺失)
2.设置style,太小不显示
<div id="bingtu" style="width: 100%;height:100%;"></div>
加载js、css:
静态文件放在static文件夹 <link rel="stylesheet" href="../static/css/province.css"/>
网页放在templates文件夹
Python flask关闭自动转义
flask 有3种方法可以关闭自动转义:
1、在Python文件中进行转义。先在 Markup 对象中进行转义,然后将它传送给模版。一般推荐使用这个方式。
from flask import Markup
result=Markup(result(params));
return render_template('xxx.html', result=result)
2、在模版文件中进行转义。通过 |safe 过滤器来表示字符串是安全的({{result|safe}})
渲染的时候 {{ result|safe }}
3、暂时禁用全局的自动转义功能。
{% autoescaping false %}
<p>autoescaping is disableed here
<p>` will_not_be_escaped `
{% endautoescape %}
可参考官方资料
http://flask-cn.readthedocs.org/en/latest/templating/
Flask如何在不重新启动的情况下,刷新修改过后的页面内容(热更新)
自动刷新
app.run(debug=True)
页面跳转
return redirect('/login')
在 Flask 中使用 EventSource
from flask import Flask, Response, render_template
import time
app = Flask(__name__)
@app.route('/stream')
def stream():
def generate():
for i in xrange(10):
yield 'data: i = %d' % i time.sleep(.1)
return Response(generate(), mimetype='text/event-stream')
@app.route('/')
def index():
return render_template('index.html')
if __name__ == "__main__":
app.run(debug=True)
https://reality0ne.com/eventsource-in-flask/
Flask 缓存
Flask 本身不提供缓存,但是 Flask-Caching 扩展可以
Installation
Install the extension with the following command:
$ pip install Flask-Caching
Set Up
Cache is managed through a Cache
instance:
from flask import Flask
from flask_caching import Cache
config = {
"DEBUG": True, # some Flask specific configs
"CACHE_TYPE": "SimpleCache", # Flask-Caching related configs
"CACHE_DEFAULT_TIMEOUT": 300
}
app = Flask(__name__)
# tell Flask to use the above defined config
app.config.from_mapping(config)
cache = Cache(app)
使用:
print(cache.get('huancun'))
cache.set("huancun", 'huancun:'+ans)
https://wizardforcel.gitbooks.io/flask-extension-docs/content/flask-cache.html
常见问题
JS弹出新窗口被拦截的解决方法
跳转页面及js打开新窗口的常用方式(含不被浏览器拦截) - 掘金
javascript打开新页面 关闭 js打开新窗口不跳转_恋上一只猪的技术博客_51CTO博客
小型web python全栈开发,Django框架仍然值得推荐
轻量的简洁框架flask依然是很好的选择,不管是用来做api还是全栈开发
异步高性能web框架fastapi和sanic都是不错的选择
·Web开发技术
·庞大的用户群体,最贴近用户的部分
·大数据的开发技术
·互联网战场的杀手
·自动化测试、运维的技术
·极大提高效率,降低人工成本
·AI开发技术
·让自动化更加的智慧
·物联网(micropython)
·各种设备的智慧互联