簡體   English   中英

在 Python3 腳本中導入模塊的問題

[英]Problem with importing a module in a Python3 script

我收到此錯誤:ImportError: cannot import name 'admin' from 'admin.blueprint' after I'm in the module blueprint.py 從 models.py 導入 Post 請幫助我了解應用程序的結構以避免這種情況未來的錯誤。

<module main.py>

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from admin.blueprint import admin
from config import Config


app = Flask(__name__)
app.config.from_object(Config)

db = SQLAlchemy(app)
app.register_blueprint(admin, url_prefix='/admin')


import views

if __name__ == '__main__'
    db.create_all()
    app.run(debug=True)`

<module blueprint.py>

from flask import Blueprint, redirect, render_template, request, url_for
from config import ConfigAdmin
from models import Post

admin = Blueprint('admin', __name__, template_folder='templates', static_folder='static')


@admin.route('/')
def admin_login():
    return render_template('admin/admin-login.html')

@admin.route('/admin-panel', methods=['POST'])
def admin_panel():
if request.form['username'] == ConfigAdmin.ADMIN_NAME and request.form['password'] == ConfigAdmin.ADMIN_PASS:
     return render_template('admin/admin-panel.html')
else:
     return redirect(url_for('admin.admin_login'))

@admin.route('/create-post')
def create_post():
    return render_template('admin/create-post.html')

@admin.route('/add-post', methods=['POST'])
def add_post():
if request.method == 'POST':
    body = Post(post_title=request.form['title'], post_text=request.form['article'], post_img=redirect.form['file'])
    db.session.add(body)
    db.session.commit()
    return redirect(url_for('index'))
else:
    return "Err"

<module models.py>

from main import db


class Admin(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20), unique=True)
    passw = db.Column(db.String(20), unique=True)


class Post(db.Model):
   id = db.Column(db.Integer, primary_key=True)
   title = db.Column(db.String(50), unique=True)
   text = db.Column(db.String(500), unique=True)
   img = db.Column(db.String(50))

[錯誤][1] [結構][2] [1]: https://i.stack.imgur.com/cgrbH.png [2]: https://i.stack.imgur.com/fDr7O.png

您是否嘗試過創建以下應用程序? Flask 教程應用程序 - Flaskr 博客如果您剛開始,我強烈建議您遵循此結構。

如下所示:

/home/user/Projects/flask-tutorial
├── flaskr/
│   ├── __init__.py
│   ├── db.py
│   ├── schema.sql
│   ├── auth.py
│   ├── blog.py
│   ├── templates/
│   │   ├── base.html
│   │   ├── auth/
│   │   │   ├── login.html
│   │   │   └── register.html
│   │   └── blog/
│   │       ├── create.html
│   │       ├── index.html
│   │       └── update.html
│   └── static/
│       └── style.css
├── tests/
│   ├── conftest.py
│   ├── data.sql
│   ├── test_factory.py
│   ├── test_db.py
│   ├── test_auth.py
│   └── test_blog.py
├── venv/
├── setup.py
└── MANIFEST.in

如果您希望在當前應用程序中使用 function,我建議您在與admin.py相同的文件夾中創建一個main.py

from flask import Blueprint, redirect, render_template, request, url_for
from config import ConfigAdmin
from models import Post

bp = Blueprint('admin', __name__, template_folder='templates', static_folder='static')

然后將其導入main.py如下

from admin import bp as adminbp
app.register_blueprint(adminbp, url_prefix='/admin')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM