IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 前后端分离,后端flask,前端vue,nginx小示例--推荐使用 -> 正文阅读

[Python知识库]前后端分离,后端flask,前端vue,nginx小示例--推荐使用

后端:

flask

后端一定要注意flask配置 跨域支持事项,否则获取不了数据信息

1.跨域支持的配置

from flask_cors import CORS, cross_origin  #跨域支持的配合
from flask import jsonify,render_template   


app=Flask(__name__)
CORS(app, supports_credentials=True)    #跨域支持

配置这些就是可以了,全局设置

?2.后端全部代码:“/api/books”

from flask import Flask

from flask_cors import CORS, cross_origin
from flask import jsonify,render_template   #跨域支持的配合
import sqlite3

app=Flask(__name__)
CORS(app, supports_credentials=True)    #跨域支持
# sqlite3 row_factory ,python推出了Cursor.Row对象。其实就是列名和值做了个映射,可以通过字符索引来获取值。很方便
# conn.row_factory = sqlite3.Row

@app.route("/api/books")
def books():
    conn=sqlite3.connect("books.db")
    conn.row_factory=sqlite3.Row  #把数据库的字段和查询的信息放在一起
    cur=conn.cursor()
    sql="select * from books"
    rows=cur.execute(sql).fetchall()



    rowsdics=[dict(row) for row in rows]



    return jsonify(rowsdics)


@app.route("/")
def home():
    return render_template("index.html",title="ht API")



if __name__ == '__main__':
    app.run()

api接口数据信息 :

?



?前端vue2.x

步骤如下:

前提系统安装有node,配置淘宝源【提升下载速度】

1.配置步骤:

======================================
==========默认创建文件的方式============================
1.创建项目 #安装命令脚手架
C:\>npm install -g @vue/cli   

2.创建项目 执行 vue create 项目名,然后选择vue2选项
注意点:选择你要存放项目的文件夹E:\htcode\vue>【我的项目文件夹】
E:\htcode\vue>vue create pmvuelab

3.选择配置文件,可以选择默认或者手动修改,等待下载包过程,最终按照提示进入项目并且运行即可

4.运行项目
进入项目文件夹 执行npm run serve 运行项目
npm run serve

5.访问验证
http://127.0.0.1:8080/


到此搭建完成
=============
1.下面把文件夹拖放到vscode中进行编辑

2.
ui安装
npm i element-ui -S

3.安装axios

4.打包文件:
npm run build

生成dist文件夹以及下面文件

2.重要参数展示

main.js

import Vue from 'vue'
import App from './App.vue'


import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)


Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

3.App.vue

<template>
    <el-table
      :data="books"
      style="width: 100%">
      <el-table-column
        prop="id"
        label="id"
        width="180">
      </el-table-column>

      <el-table-column
        prop="title"
        label="title"
        width="180">
      </el-table-column>

      <el-table-column
        prop="author"
        label="author"
        width="180">
      </el-table-column>
      <el-table-column
        prop="price"
        label="price">
      </el-table-column>
    </el-table>
  </template>


<script>
import axios from 'axios';
    export default {

      data() {
        return {
          books:[]
        }
      },
      mounted() {
        this.fetchData();
      },
      methods:{

        //#######################vue-axios方式###########################
        //axios的调取方式
        fetchData() {
            axios.get("http://127.0.0.1:5000/api/books")
            .then(respose=>(this.books=respose.data))
            .catch(function (error) {
                console.log(error)

            })
        }
      }
    }
  </script>


4.主要安装的版本内容 :

  "dependencies": {
    "axios": "^0.27.2",
    "core-js": "^3.8.3",
    "element-ui": "^2.15.8",
    "vue": "^2.6.14"
  },

?



三.nginx配置信息:

下载地址“nginx: downloadicon-default.png?t=M4ADhttp://nginx.org/en/download.html

nginx: download

?

?3.1解压后放到不包含中文目录的盘符下

?3.2修改配置文件,复制一份conf下的 “nginx.conf”为“ht.conf”

?3.3需要修改的地方:

?

?

?其他的不需要修改:

可以参考下我的配置文件内容如下:


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
     #add_header 'Access-Control-Allow-Origin' '*';
     #add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
     #add_header 'Access-Control-Allow-Headers' 'Origin,X-Requested-With,Content-Type,Accept,Authorization';

    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
    	 

        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
	
            root   dist;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
	


        location /api/books {
            proxy_pass   http://127.0.0.1:5000;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

3.5运行nginx服务:[运行前把vue打包的文件生成的dist文件夹以及文件放在nginx的目录下]

指定配置文件的运行,配置文件为ht.conf

D:\nginx>nginx.exe -c .\conf\ht.conf

?

?3.6运行以及展示文件内容:

?3.7总结:

在这个过程中,跨域的问题研究了很久,最终通过flask的,cors解决了这个问题:

from flask_cors import CORS, cross_origin #跨域支持的配合
from flask import jsonify,render_template   
import sqlite3

app=Flask(__name__)
CORS(app, supports_credentials=True)    #跨域支持
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 19:00:59  更:2022-06-08 19:02:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 13:01:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码