Flask에서 가능한 가장 빠른 노트 앱 구축(Shopyo 사용)
첫 번째 단계
첫 번째 단계는 라이브러리를 설치하는 것입니다.
python3.9 -m venv venv # create virtual env
. venv/bin/activate # activate (linux version)
pip install shopyo==4.4.3
그런 다음 폴더를 만듭니다.
mkdir note_app
우리는 폴더에 들어갑니다
cd note_app
그런 다음 새로운 Shopyo 프로젝트를 만듭니다.
shopyo new
출력은 다음과 같습니다.
creating project note_app...
#######################
[x] Project note_app created successfully!
트리 조회는
├── docs
│ ├── conf.py
│ ├── docs.rst
│ ├── index.rst
│ ├── Makefile
│ └── _static
│ └── custom.css
├── MANIFEST.in
├── note_app
├── pytest.ini
├── README.md
├── requirements.txt
├── setup.py
└── tox.ini
지금은 앱 패키징에 관심이 없으므로 내부 note_app/폴더로 전환할 수 있습니다.
cd note_app
내부 note_app 폴더의 구조는 다음과 같습니다.
├── note_app
│ ├── app.py
│ ├── app.txt
│ ├── autoapp.py
│ ├── CHANGELOG.md
│ ├── cli.py
│ ├── config_demo.json
│ ├── config.py
│ ├── conftest.py
│ ├── __init__.py
│ ├── init.py
│ ├── manage.py
│ ├── modules
│ ├── shopyo_admin.py
│ ├── static
│ ├── tests
│ │ ├── conftest.py
│ │ └── test_configs.py
│ └── wsgi.py
모듈 생성
메모 앱을 만들 수 있습니다.
shopyo startapp notes
modules/
아래에 새 폴더가 생성됩니다. modules/note_app/
의 내용은 다음과 같습니다.
modules/notes/
├── forms.py
├── global.py
├── info.json
├── models.py
├── static
├── templates
│ └── notes
│ ├── blocks
│ │ └── sidebar.html
│ └── dashboard.html
├── tests
│ ├── test_notes_functional.py
│ └── test_notes_models.py
└── view.py
기본적으로 생성되는 파일입니다.
첫 번째 보기 작성
info.json
파일에는 url 네임스페이스(module_name) 및 url 접두사를 포함하여 모듈에 대한 몇 가지 기본 사항이 나열되어 있습니다.
{
"author": {
"mail": "",
"name": "",
"website": ""
},
"display_string": "Notes",
"fa-icon": "fa fa-store",
"module_name": "notes",
"type": "show",
"url_prefix": "/notes"
}
url_prefix
를 "/"
로 바꾸자
{
...,
"url_prefix": "/"
}
우리의 view.py
는 기본적으로 생성되는 다음과 같습니다.
from shopyo.api.module import ModuleHelp
mhelp = ModuleHelp(__file__, __name__)
globals()[mhelp.blueprint_str] = mhelp.blueprint
module_blueprint = globals()[mhelp.blueprint_str]
@module_blueprint.route("/")
def index():
return mhelp.info['display_string']
반환 문자열을 String from notes app
로 변경해 보겠습니다.
@module_blueprint.route("/")
def index():
return "String from notes app"
앱 실행
Runshopyo rundebug
을 실행하여 디버그 모드에서 앱을 실행합니다.
"http://127.0.0.1:5000/ "로 이동하면 "노트 앱의 문자열"이 반환되어야 합니다.
실행 명령here에 대해 자세히 알아볼 수 있습니다.
모델 생성
노트에는 제목과 내용이 있습니다. modules/notes/models.py
에 다음과 같이 작성합니다.
from init import db
from shopyo.api.models import PkModel
class Note(PkModel):
__tablename__ = 'notes'
title = db.Column(db.String(80), nullable=False)
content = db.Text()
init
가져오기는 init.py
파일에서 가져옵니다.PkModel
는 기본 키가 db.Model
인 id
와 동일합니다.
그런 다음 앱을 초기화합니다. 후드 아래에서 Flask-Migrate를 사용합니다. 더 많은 초기화 옵션을 볼 수 있습니다here.
$ shopyo initialise
initializing...
Cleaning...
#######################
Auto importing models...
#######################
Creating db...
#######################
Migrating db...
#######################
Upgrading db...
#######################
Collecting static...
#######################
Uploading initial data to db...
#######################
All Done!
이것은 Shopyo가 기본 sqlalchemy 연결 문자열로 shopyo.db
를 추가할 때 작동했습니다.
Flask 관리자 구성
이제 빠른 CRUD 보기를 갖도록 flask-admin을 구성하겠습니다. 다행스럽게도 Shopyo에는 이미 몇 가지 기본 사항이 있습니다.
먼저 Flask 로그인 인증을 제거하도록 수정shopyo_admin.py
from flask import redirect
from flask import request
from flask import url_for
from flask_admin import AdminIndexView
from flask_admin import expose
from flask_admin.contrib import sqla as flask_admin_sqla
from flask_login import current_user
class DefaultModelView(flask_admin_sqla.ModelView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# def is_accessible(self):
# return current_user.is_authenticated and current_user.is_admin
# def inaccessible_callback(self, name, **kwargs):
# # redirect to login page if user doesn't have access
# return redirect(url_for("auth.login", next=request.url))
class MyAdminIndexView(AdminIndexView):
# def is_accessible(self):
# return current_user.is_authenticated and current_user.is_admin
# def inaccessible_callback(self, name, **kwargs):
# # redirect to login page if user doesn't have access
# return redirect(url_for("auth.login", next=request.url))
@expose("/")
def index(self):
# if not current_user.is_authenticated and current_user.is_admin:
# return redirect(url_for("auth.login"))
return super().index()
#
@expose("/dashboard")
def indexs(self):
# if not current_user.is_authenticated and current_user.is_admin:
# return redirect(url_for("auth.login"))
return super().index()
그런 다음 app.py에서 Flask-Login을 주석 처리하여 로드하지 마십시오.
def load_extensions(app):
...
# login_manager.init_app(app)
그런 다음 app.py
에서 Note 모델을 가져옵니다.
from modules.notes.models import Note
setup_flask_admin
함수를 다음과 같이 수정합니다.
def setup_flask_admin(app):
admin = Admin(
app,
name="My App",
template_mode="bootstrap4",
index_view=MyAdminIndexView(),
)
admin.add_view(ModelView(Note, db.session))
이제 /admin
로 이동하면
노트를 클릭하면 노트 모델을 편집할 수 있습니다. 몇 가지 모델을 추가해 봅시다!
템플릿 표시
남은 것은 메인 페이지에 메모를 표시하는 것입니다.
modules/notes/templates/notes
에서 내용이 있는 index.html이라는 파일을 만듭니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
{% for note in notes %}
{{note.title}}<br>
{{note.content}}<hr>
{% endfor %}
</body>
</html>
view.py를 다음과 같이 수정합니다.
from shopyo.api.module import ModuleHelp
from flask import render_template
from .models import Note
mhelp = ModuleHelp(__file__, __name__)
globals()[mhelp.blueprint_str] = mhelp.blueprint
module_blueprint = globals()[mhelp.blueprint_str]
@module_blueprint.route("/")
def index():
notes = Note.query.all()
return render_template('notes/index.html', notes=notes)
그 결과:
Shopyo는 다음과 같은 유틸리티도 제공합니다.
from shopyo.api.templates import yo_render
...
@module_blueprint.route("/")
def index():
notes = Note.query.all()
context = {
'notes': notes
}
return yo_render('notes/index.html', context)
데모 앱 사용해 보기
데모 앱을 사용해보고 싶다면 그냥 실행하세요(플라스크 로그인 수정 사항에 다시 댓글을 달아주세요).
mkdir project
cd project
shopyo new -m # -m adds default modules
cd project
shopyo initialise
shopyo rundebug
그러면 인증된 Flask 관리자가 어떻게 생겼는지 확인할 수 있습니다.
이 게시물을 즐기시기 바랍니다!
이 튜토의 앱을 사용할 수 있습니다here.
Reference
이 문제에 관하여(Flask에서 가능한 가장 빠른 노트 앱 구축(Shopyo 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/abdurrahmaanj/build-a-note-app-in-flask-as-fast-as-it-can-get-using-shopyo-5gn0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
python3.9 -m venv venv # create virtual env
. venv/bin/activate # activate (linux version)
pip install shopyo==4.4.3
mkdir note_app
cd note_app
shopyo new
creating project note_app...
#######################
[x] Project note_app created successfully!
├── docs
│ ├── conf.py
│ ├── docs.rst
│ ├── index.rst
│ ├── Makefile
│ └── _static
│ └── custom.css
├── MANIFEST.in
├── note_app
├── pytest.ini
├── README.md
├── requirements.txt
├── setup.py
└── tox.ini
cd note_app
├── note_app
│ ├── app.py
│ ├── app.txt
│ ├── autoapp.py
│ ├── CHANGELOG.md
│ ├── cli.py
│ ├── config_demo.json
│ ├── config.py
│ ├── conftest.py
│ ├── __init__.py
│ ├── init.py
│ ├── manage.py
│ ├── modules
│ ├── shopyo_admin.py
│ ├── static
│ ├── tests
│ │ ├── conftest.py
│ │ └── test_configs.py
│ └── wsgi.py
메모 앱을 만들 수 있습니다.
shopyo startapp notes
modules/
아래에 새 폴더가 생성됩니다. modules/note_app/
의 내용은 다음과 같습니다.modules/notes/
├── forms.py
├── global.py
├── info.json
├── models.py
├── static
├── templates
│ └── notes
│ ├── blocks
│ │ └── sidebar.html
│ └── dashboard.html
├── tests
│ ├── test_notes_functional.py
│ └── test_notes_models.py
└── view.py
기본적으로 생성되는 파일입니다.
첫 번째 보기 작성
info.json
파일에는 url 네임스페이스(module_name) 및 url 접두사를 포함하여 모듈에 대한 몇 가지 기본 사항이 나열되어 있습니다.
{
"author": {
"mail": "",
"name": "",
"website": ""
},
"display_string": "Notes",
"fa-icon": "fa fa-store",
"module_name": "notes",
"type": "show",
"url_prefix": "/notes"
}
url_prefix
를 "/"
로 바꾸자
{
...,
"url_prefix": "/"
}
우리의 view.py
는 기본적으로 생성되는 다음과 같습니다.
from shopyo.api.module import ModuleHelp
mhelp = ModuleHelp(__file__, __name__)
globals()[mhelp.blueprint_str] = mhelp.blueprint
module_blueprint = globals()[mhelp.blueprint_str]
@module_blueprint.route("/")
def index():
return mhelp.info['display_string']
반환 문자열을 String from notes app
로 변경해 보겠습니다.
@module_blueprint.route("/")
def index():
return "String from notes app"
앱 실행
Runshopyo rundebug
을 실행하여 디버그 모드에서 앱을 실행합니다.
"http://127.0.0.1:5000/ "로 이동하면 "노트 앱의 문자열"이 반환되어야 합니다.
실행 명령here에 대해 자세히 알아볼 수 있습니다.
모델 생성
노트에는 제목과 내용이 있습니다. modules/notes/models.py
에 다음과 같이 작성합니다.
from init import db
from shopyo.api.models import PkModel
class Note(PkModel):
__tablename__ = 'notes'
title = db.Column(db.String(80), nullable=False)
content = db.Text()
init
가져오기는 init.py
파일에서 가져옵니다.PkModel
는 기본 키가 db.Model
인 id
와 동일합니다.
그런 다음 앱을 초기화합니다. 후드 아래에서 Flask-Migrate를 사용합니다. 더 많은 초기화 옵션을 볼 수 있습니다here.
$ shopyo initialise
initializing...
Cleaning...
#######################
Auto importing models...
#######################
Creating db...
#######################
Migrating db...
#######################
Upgrading db...
#######################
Collecting static...
#######################
Uploading initial data to db...
#######################
All Done!
이것은 Shopyo가 기본 sqlalchemy 연결 문자열로 shopyo.db
를 추가할 때 작동했습니다.
Flask 관리자 구성
이제 빠른 CRUD 보기를 갖도록 flask-admin을 구성하겠습니다. 다행스럽게도 Shopyo에는 이미 몇 가지 기본 사항이 있습니다.
먼저 Flask 로그인 인증을 제거하도록 수정shopyo_admin.py
from flask import redirect
from flask import request
from flask import url_for
from flask_admin import AdminIndexView
from flask_admin import expose
from flask_admin.contrib import sqla as flask_admin_sqla
from flask_login import current_user
class DefaultModelView(flask_admin_sqla.ModelView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# def is_accessible(self):
# return current_user.is_authenticated and current_user.is_admin
# def inaccessible_callback(self, name, **kwargs):
# # redirect to login page if user doesn't have access
# return redirect(url_for("auth.login", next=request.url))
class MyAdminIndexView(AdminIndexView):
# def is_accessible(self):
# return current_user.is_authenticated and current_user.is_admin
# def inaccessible_callback(self, name, **kwargs):
# # redirect to login page if user doesn't have access
# return redirect(url_for("auth.login", next=request.url))
@expose("/")
def index(self):
# if not current_user.is_authenticated and current_user.is_admin:
# return redirect(url_for("auth.login"))
return super().index()
#
@expose("/dashboard")
def indexs(self):
# if not current_user.is_authenticated and current_user.is_admin:
# return redirect(url_for("auth.login"))
return super().index()
그런 다음 app.py에서 Flask-Login을 주석 처리하여 로드하지 마십시오.
def load_extensions(app):
...
# login_manager.init_app(app)
그런 다음 app.py
에서 Note 모델을 가져옵니다.
from modules.notes.models import Note
setup_flask_admin
함수를 다음과 같이 수정합니다.
def setup_flask_admin(app):
admin = Admin(
app,
name="My App",
template_mode="bootstrap4",
index_view=MyAdminIndexView(),
)
admin.add_view(ModelView(Note, db.session))
이제 /admin
로 이동하면
노트를 클릭하면 노트 모델을 편집할 수 있습니다. 몇 가지 모델을 추가해 봅시다!
템플릿 표시
남은 것은 메인 페이지에 메모를 표시하는 것입니다.
modules/notes/templates/notes
에서 내용이 있는 index.html이라는 파일을 만듭니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
{% for note in notes %}
{{note.title}}<br>
{{note.content}}<hr>
{% endfor %}
</body>
</html>
view.py를 다음과 같이 수정합니다.
from shopyo.api.module import ModuleHelp
from flask import render_template
from .models import Note
mhelp = ModuleHelp(__file__, __name__)
globals()[mhelp.blueprint_str] = mhelp.blueprint
module_blueprint = globals()[mhelp.blueprint_str]
@module_blueprint.route("/")
def index():
notes = Note.query.all()
return render_template('notes/index.html', notes=notes)
그 결과:
Shopyo는 다음과 같은 유틸리티도 제공합니다.
from shopyo.api.templates import yo_render
...
@module_blueprint.route("/")
def index():
notes = Note.query.all()
context = {
'notes': notes
}
return yo_render('notes/index.html', context)
데모 앱 사용해 보기
데모 앱을 사용해보고 싶다면 그냥 실행하세요(플라스크 로그인 수정 사항에 다시 댓글을 달아주세요).
mkdir project
cd project
shopyo new -m # -m adds default modules
cd project
shopyo initialise
shopyo rundebug
그러면 인증된 Flask 관리자가 어떻게 생겼는지 확인할 수 있습니다.
이 게시물을 즐기시기 바랍니다!
이 튜토의 앱을 사용할 수 있습니다here.
Reference
이 문제에 관하여(Flask에서 가능한 가장 빠른 노트 앱 구축(Shopyo 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/abdurrahmaanj/build-a-note-app-in-flask-as-fast-as-it-can-get-using-shopyo-5gn0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{
"author": {
"mail": "",
"name": "",
"website": ""
},
"display_string": "Notes",
"fa-icon": "fa fa-store",
"module_name": "notes",
"type": "show",
"url_prefix": "/notes"
}
{
...,
"url_prefix": "/"
}
from shopyo.api.module import ModuleHelp
mhelp = ModuleHelp(__file__, __name__)
globals()[mhelp.blueprint_str] = mhelp.blueprint
module_blueprint = globals()[mhelp.blueprint_str]
@module_blueprint.route("/")
def index():
return mhelp.info['display_string']
@module_blueprint.route("/")
def index():
return "String from notes app"
Run
shopyo rundebug
을 실행하여 디버그 모드에서 앱을 실행합니다."http://127.0.0.1:5000/ "로 이동하면 "노트 앱의 문자열"이 반환되어야 합니다.
실행 명령here에 대해 자세히 알아볼 수 있습니다.
모델 생성
노트에는 제목과 내용이 있습니다. modules/notes/models.py
에 다음과 같이 작성합니다.
from init import db
from shopyo.api.models import PkModel
class Note(PkModel):
__tablename__ = 'notes'
title = db.Column(db.String(80), nullable=False)
content = db.Text()
init
가져오기는 init.py
파일에서 가져옵니다.PkModel
는 기본 키가 db.Model
인 id
와 동일합니다.
그런 다음 앱을 초기화합니다. 후드 아래에서 Flask-Migrate를 사용합니다. 더 많은 초기화 옵션을 볼 수 있습니다here.
$ shopyo initialise
initializing...
Cleaning...
#######################
Auto importing models...
#######################
Creating db...
#######################
Migrating db...
#######################
Upgrading db...
#######################
Collecting static...
#######################
Uploading initial data to db...
#######################
All Done!
이것은 Shopyo가 기본 sqlalchemy 연결 문자열로 shopyo.db
를 추가할 때 작동했습니다.
Flask 관리자 구성
이제 빠른 CRUD 보기를 갖도록 flask-admin을 구성하겠습니다. 다행스럽게도 Shopyo에는 이미 몇 가지 기본 사항이 있습니다.
먼저 Flask 로그인 인증을 제거하도록 수정shopyo_admin.py
from flask import redirect
from flask import request
from flask import url_for
from flask_admin import AdminIndexView
from flask_admin import expose
from flask_admin.contrib import sqla as flask_admin_sqla
from flask_login import current_user
class DefaultModelView(flask_admin_sqla.ModelView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# def is_accessible(self):
# return current_user.is_authenticated and current_user.is_admin
# def inaccessible_callback(self, name, **kwargs):
# # redirect to login page if user doesn't have access
# return redirect(url_for("auth.login", next=request.url))
class MyAdminIndexView(AdminIndexView):
# def is_accessible(self):
# return current_user.is_authenticated and current_user.is_admin
# def inaccessible_callback(self, name, **kwargs):
# # redirect to login page if user doesn't have access
# return redirect(url_for("auth.login", next=request.url))
@expose("/")
def index(self):
# if not current_user.is_authenticated and current_user.is_admin:
# return redirect(url_for("auth.login"))
return super().index()
#
@expose("/dashboard")
def indexs(self):
# if not current_user.is_authenticated and current_user.is_admin:
# return redirect(url_for("auth.login"))
return super().index()
그런 다음 app.py에서 Flask-Login을 주석 처리하여 로드하지 마십시오.
def load_extensions(app):
...
# login_manager.init_app(app)
그런 다음 app.py
에서 Note 모델을 가져옵니다.
from modules.notes.models import Note
setup_flask_admin
함수를 다음과 같이 수정합니다.
def setup_flask_admin(app):
admin = Admin(
app,
name="My App",
template_mode="bootstrap4",
index_view=MyAdminIndexView(),
)
admin.add_view(ModelView(Note, db.session))
이제 /admin
로 이동하면
노트를 클릭하면 노트 모델을 편집할 수 있습니다. 몇 가지 모델을 추가해 봅시다!
템플릿 표시
남은 것은 메인 페이지에 메모를 표시하는 것입니다.
modules/notes/templates/notes
에서 내용이 있는 index.html이라는 파일을 만듭니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
{% for note in notes %}
{{note.title}}<br>
{{note.content}}<hr>
{% endfor %}
</body>
</html>
view.py를 다음과 같이 수정합니다.
from shopyo.api.module import ModuleHelp
from flask import render_template
from .models import Note
mhelp = ModuleHelp(__file__, __name__)
globals()[mhelp.blueprint_str] = mhelp.blueprint
module_blueprint = globals()[mhelp.blueprint_str]
@module_blueprint.route("/")
def index():
notes = Note.query.all()
return render_template('notes/index.html', notes=notes)
그 결과:
Shopyo는 다음과 같은 유틸리티도 제공합니다.
from shopyo.api.templates import yo_render
...
@module_blueprint.route("/")
def index():
notes = Note.query.all()
context = {
'notes': notes
}
return yo_render('notes/index.html', context)
데모 앱 사용해 보기
데모 앱을 사용해보고 싶다면 그냥 실행하세요(플라스크 로그인 수정 사항에 다시 댓글을 달아주세요).
mkdir project
cd project
shopyo new -m # -m adds default modules
cd project
shopyo initialise
shopyo rundebug
그러면 인증된 Flask 관리자가 어떻게 생겼는지 확인할 수 있습니다.
이 게시물을 즐기시기 바랍니다!
이 튜토의 앱을 사용할 수 있습니다here.
Reference
이 문제에 관하여(Flask에서 가능한 가장 빠른 노트 앱 구축(Shopyo 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/abdurrahmaanj/build-a-note-app-in-flask-as-fast-as-it-can-get-using-shopyo-5gn0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from init import db
from shopyo.api.models import PkModel
class Note(PkModel):
__tablename__ = 'notes'
title = db.Column(db.String(80), nullable=False)
content = db.Text()
$ shopyo initialise
initializing...
Cleaning...
#######################
Auto importing models...
#######################
Creating db...
#######################
Migrating db...
#######################
Upgrading db...
#######################
Collecting static...
#######################
Uploading initial data to db...
#######################
All Done!
이제 빠른 CRUD 보기를 갖도록 flask-admin을 구성하겠습니다. 다행스럽게도 Shopyo에는 이미 몇 가지 기본 사항이 있습니다.
먼저 Flask 로그인 인증을 제거하도록 수정
shopyo_admin.py
from flask import redirect
from flask import request
from flask import url_for
from flask_admin import AdminIndexView
from flask_admin import expose
from flask_admin.contrib import sqla as flask_admin_sqla
from flask_login import current_user
class DefaultModelView(flask_admin_sqla.ModelView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# def is_accessible(self):
# return current_user.is_authenticated and current_user.is_admin
# def inaccessible_callback(self, name, **kwargs):
# # redirect to login page if user doesn't have access
# return redirect(url_for("auth.login", next=request.url))
class MyAdminIndexView(AdminIndexView):
# def is_accessible(self):
# return current_user.is_authenticated and current_user.is_admin
# def inaccessible_callback(self, name, **kwargs):
# # redirect to login page if user doesn't have access
# return redirect(url_for("auth.login", next=request.url))
@expose("/")
def index(self):
# if not current_user.is_authenticated and current_user.is_admin:
# return redirect(url_for("auth.login"))
return super().index()
#
@expose("/dashboard")
def indexs(self):
# if not current_user.is_authenticated and current_user.is_admin:
# return redirect(url_for("auth.login"))
return super().index()
그런 다음 app.py에서 Flask-Login을 주석 처리하여 로드하지 마십시오.
def load_extensions(app):
...
# login_manager.init_app(app)
그런 다음
app.py
에서 Note 모델을 가져옵니다.from modules.notes.models import Note
setup_flask_admin
함수를 다음과 같이 수정합니다.def setup_flask_admin(app):
admin = Admin(
app,
name="My App",
template_mode="bootstrap4",
index_view=MyAdminIndexView(),
)
admin.add_view(ModelView(Note, db.session))
이제
/admin
로 이동하면노트를 클릭하면 노트 모델을 편집할 수 있습니다. 몇 가지 모델을 추가해 봅시다!
템플릿 표시
남은 것은 메인 페이지에 메모를 표시하는 것입니다.
modules/notes/templates/notes
에서 내용이 있는 index.html이라는 파일을 만듭니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
{% for note in notes %}
{{note.title}}<br>
{{note.content}}<hr>
{% endfor %}
</body>
</html>
view.py를 다음과 같이 수정합니다.
from shopyo.api.module import ModuleHelp
from flask import render_template
from .models import Note
mhelp = ModuleHelp(__file__, __name__)
globals()[mhelp.blueprint_str] = mhelp.blueprint
module_blueprint = globals()[mhelp.blueprint_str]
@module_blueprint.route("/")
def index():
notes = Note.query.all()
return render_template('notes/index.html', notes=notes)
그 결과:
Shopyo는 다음과 같은 유틸리티도 제공합니다.
from shopyo.api.templates import yo_render
...
@module_blueprint.route("/")
def index():
notes = Note.query.all()
context = {
'notes': notes
}
return yo_render('notes/index.html', context)
데모 앱 사용해 보기
데모 앱을 사용해보고 싶다면 그냥 실행하세요(플라스크 로그인 수정 사항에 다시 댓글을 달아주세요).
mkdir project
cd project
shopyo new -m # -m adds default modules
cd project
shopyo initialise
shopyo rundebug
그러면 인증된 Flask 관리자가 어떻게 생겼는지 확인할 수 있습니다.
이 게시물을 즐기시기 바랍니다!
이 튜토의 앱을 사용할 수 있습니다here.
Reference
이 문제에 관하여(Flask에서 가능한 가장 빠른 노트 앱 구축(Shopyo 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/abdurrahmaanj/build-a-note-app-in-flask-as-fast-as-it-can-get-using-shopyo-5gn0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
{% for note in notes %}
{{note.title}}<br>
{{note.content}}<hr>
{% endfor %}
</body>
</html>
from shopyo.api.module import ModuleHelp
from flask import render_template
from .models import Note
mhelp = ModuleHelp(__file__, __name__)
globals()[mhelp.blueprint_str] = mhelp.blueprint
module_blueprint = globals()[mhelp.blueprint_str]
@module_blueprint.route("/")
def index():
notes = Note.query.all()
return render_template('notes/index.html', notes=notes)
from shopyo.api.templates import yo_render
...
@module_blueprint.route("/")
def index():
notes = Note.query.all()
context = {
'notes': notes
}
return yo_render('notes/index.html', context)
데모 앱을 사용해보고 싶다면 그냥 실행하세요(플라스크 로그인 수정 사항에 다시 댓글을 달아주세요).
mkdir project
cd project
shopyo new -m # -m adds default modules
cd project
shopyo initialise
shopyo rundebug
그러면 인증된 Flask 관리자가 어떻게 생겼는지 확인할 수 있습니다.
이 게시물을 즐기시기 바랍니다!
이 튜토의 앱을 사용할 수 있습니다here.
Reference
이 문제에 관하여(Flask에서 가능한 가장 빠른 노트 앱 구축(Shopyo 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/abdurrahmaanj/build-a-note-app-in-flask-as-fast-as-it-can-get-using-shopyo-5gn0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)