플라스크 응용 프로그램에 대해 하나의 파일 views.py
이 있습니다.Flask-Admin에서 하나의보기를 제한 하시겠습니까?
db = SQLAlchemy(flaskapp)
def build_db():
import random
import datetime
db.drop_all()
db.create_all()
# Create sample Users
testuser = []
testgroup = []
testlevel = []
user_list = []
for i in range(len(testuser)):
user = User()
user.testuser = testuser[i]
user.testlevel = testlevel[i]
user.testgroup = testgroup[i]
user_list.append(user)
db.session.add(user)
for user in user_list:
entry = random.choice(sample_text) # select text at random
post = Post()
post.user = user
post.title = entry['title']
post.text = entry['content']
tmp = int(1000*random.random()) # random number between 0 and 1000:
post.date = datetime.datetime.now() - datetime.timedelta(days=tmp)
post.tags = random.sample(tag_list, 2) # select a couple of tags at random
db.session.add(post)
db.session.commit()
return
# Create models
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
testuser = db.Column(db.String(100))
testgroup = db.Column(db.String(100))
testlevel = db.Column(db.String(100))
# Required for administrative interface. For python 3 please use __str__ instead.
def __repr__(self):
return self.testuser
class UserInfo(db.Model):
id = db.Column(db.Integer, primary_key=True)
key = db.Column(db.String(64), nullable=False)
value = db.Column(db.String(64))
user_id = db.Column(db.Integer(), db.ForeignKey(User.id))
user = db.relationship(User, backref='info')
def __repr__(self):
return '%s - %s' % (self.key, self.value)
### Attempt at doing something...
class MyView(ModelView):
@expose('/admin/userview', methods=('GET', 'POST'))
def adminview():
return "yes"
##ADMIN
admin = Admin(flaskapp, name="Test Aptly")
admin.add_view(MyView(User, db.session))
[질문 :
는 views.py
내부, 나는 Flask-Admin
에 대한 설정과 여기에 대응하는 sqlalchemy
데이터베이스를 가지고있다.
사용자의 등급 (데이터베이스 "testlevel"로 정의)에 따라 "/ admin/userview"페이지에 대한 액세스를 차단하는 방법은 무엇입니까? 사용자 3 자질을 가지고, 두 사용자의 예는 다음과 같습니다
어떻게 난 단지 testlevel="admin"
사람들을하자로 관리자 페이지를 제한 할
testuser testgroup testlevel
joe it admin
john dev basic
? 플라스크 보안을 사용합니까? 플라스크 - 교장? 그렇다면 어떻게? 나는 조금씩 둘 다 땜질하고 있었고 나는 지금까지 아무 것도 작동시키지 못했다. 모든
example Flask-Admin
첫째, 당신은 표시 방법되어야 하는지를 구성하는 다양한 클래스 수준의 속성을 사용할 수 있습니다 : 같은
여기 예를 들어 "/ 관리/userview"입니다 보인다. 예를 들어 column_list는 을 사용하여 일부 열을 표시하거나 관련 모델의 추가 열을 포함 할 수 있습니다. 예를를 들어
:
class UserView(ModelView):
# Show only name and email columns in list view
column_list = ('name', 'email')
# Enable search functionality - it will search for terms in
# name and email fields
column_searchable_list = ('name', 'email')
# Add filters for name and email columns
column_filters = ('name', 'email')
또는, 모델 뷰 메소드의 일부를 오버라이드 (override) 할 수 있으며 는 사용자 정의 로직을 구현한다. 당신이 생성 된 폼에 추가 필드에 기여해야하는 경우
예를 들어, 당신은 같은 것을 할 수 있습니다
class UserView(ModelView):
def scaffold_form(self):
form_class = super(UserView, self).scaffold_form()
form_class.extra = wtf.TextField('Extra')
return form_class
확인 flask.ext.admin.contrib.sqlamodel documentation을 구성 프로퍼티와 메소드의 목록. 감사!
나는 또한 내가 그렇게 같은 이름 얻기 위해 Kerberos를 사용하는 것이 했어야 : '('REMOTE_USER ') 나는 서브 클래스하지 않은 아무것도 'request.environ.get을, 내가 무엇을 게시 내가 사용하는 모든 것을 거기에있다 Flask-Admin/sqlalchemy가 실행되도록하십시오. 나는 Flask-Admin이 웹 페이지 나 그 밖의 것을 유지하는 곳을 모른다./ – asdfgthereisnocowlevel
'request.environ.get ('REMOTE_USER')'이 사용자 이름 (문자열)을 포함하고 있다면, 당신은 당신의 데이터베이스를 질의하여 그의 테스트 레벨을 얻을 수있다. 하위 클래스 화와 관련해서는'Admin' 객체를 생성하고 뷰를 추가해야하는 곳이 있어야합니다 (예 : [here] (http://flask-admin.readthedocs.org/en/latest/quickstart/#adding- views)). 'admin.add_view (...)'에서 어떤 클래스를 사용하고 있습니까? –
그래, 나는 Flask 응용 프로그램에서이 작업을 해왔지만 Flask-Admin을 사용하여 데이터베이스를 쿼리하는 작업을 수행하지 못했습니다. – asdfgthereisnocowlevel