【发布时间】:2015-05-15 02:59:17
【问题描述】:
我对瓶子和软木塞很陌生。我正在开发一个使用 Bottle 作为框架和 MongoDB 作为后端的 Web 应用程序。我试图弄清楚如何使用 Cork 实现用户登录系统。
我阅读了 Cork 的文档和示例,并尝试进行设置。我已经成功地将 cork 实例与 Mongodb 连接起来,因为我看到了作为参数(后端)传递给 Cork() 构造函数的数据库名称出现在 mongo shell 中。但后来我不知道如何继续。
我阅读了所有 Cork 方法的源代码,它们都对我有意义。但是他们中的很多人需要一个具有足够角色级别的用户才能被称为“list_roles()”或“create_users()”。我了解它们旨在由管理员调用。但我的问题是,当我最初根本没有用户时,如何开始创建一些用户并进行测试?
以下是我目前得到的,我只需要一些简单的指导或示例代码即可开始。非常感谢任何帮助!
文件名:api.py
from cork import Cork
from cork.backends import MongoDBBackend
from bottle import Bottle, redirect, static_file, request, response,HTTPResponse, HTTPError, abort, debug,run, route
import bottle
from beaker.middleware import SessionMiddleware
import pymongo
session_opts = {
'session.type': 'cookie',
'session.validate_key': True,
'session.cookie_expires': True,
'session.timeout': 3600 * 24, # 1 day
'session.encrypt_key': 'lxy3344',
}
app = bottle.app()
app = SessionMiddleware(app, session_opts)
mb = MongoDBBackend(db_name='corkTry')
aaa = Cork(backend=mb, email_sender='kkgghhyy@gmail.com')
def postd():
return bottle.request.forms
def post_get(name, default=''):
return bottle.request.POST.get(name, default).strip()
# LOGIN # # LOGIN # # LOGIN # # LOGIN # # LOGIN # # LOGIN # # LOGIN #
@bottle.route('/')
@bottle.get('/login')
def login():
print aaa.current_user()
redirect('/static/login.html')
@bottle.post('/login')
def login():
print 'in post login'
"""Authenticate users"""
username = post_get('username')
password = post_get('password')
aaa.login(username, password, success_redirect='/home', fail_redirect='/login')
# REGISTER # # REGISTER # # REGISTER # # REGISTER # # REGISTER # # REGISTER #
@bottle.get('/register')
def register():
redirect('/static/register.html')
@bottle.post('/register')
def register():
# Send out register email
aaa.register(post_get('username'), post_get('password'), post_get('email_address'))
return 'Please check your mailbox.'
@bottle.route('/validate_registration/:registration_code')
def validate_registration(registration_code):
# Validate registration, create user account
aaa.validate_registration(registration_code)
return 'Thanks. <a href="/login">Go to login</a>'
@bottle.route('/static/<filepath:path>',method='GET')
def serve_static(filepath):
return static_file(filepath, root='./static/' )
@bottle.route('/home')
def home():
return '''This is the home page'''
bottle.debug(True)
bottle.run(app=app,reloader = True)
【问题讨论】:
标签: python mongodb bottle web-frameworks