标签: pyramid

使用烧杯会话检查用户是否在Pyramid中进行了身份验证

我正在使用Pyramid和Beaker会话创建一个webapp.
我想request.session['user_id']在成功登录后存储用户ID 和其他一些信息,然后用它来检查用户是否已登录:

if 'user_id' in request.session:
    # user signed in
else:
    # user not signed in or session is expired
Run Code Online (Sandbox Code Playgroud)

现在的问题是:是否可以安全地依赖于会话或将是更好的和/或使用更安全金字塔的authenticated_userid()remember()forget()pyramid.security

python authentication session pyramid

12
推荐指数
1
解决办法
3198
查看次数

Pyramid的小用户群是我应该关注的吗?

我是网络应用程序开发的新手,我刚刚开始构建一个(相对较大的)webapp.到目前为止,我一直在使用Django,但是,我刚刚读到了金字塔,我真的很喜欢它的声音:它的文档读得很好,它似乎很容易从小到大的项目扩展,它很自豪性能,它的开发人员似乎很喜欢它.所有美好的事物.它看起来也非常灵活,很适合我的需求.但是,我担心Pyramid的用户群.

例如,在stackoverflow上,"金字塔"标签本周出现了6个问题,而"django"标签已经看到247.我知道金字塔开发人员致力于回答开发人员的任何问题,但是,这并没有完全解决我放心了.我只是不确定我是否会因为选择一个拥有如此庞大的社区的框架而冒风险.我担心的是:

  • 没有多少"用户"文档
    • 使用Django,你可以谷歌如何做任何你想做的事情,你最终会在某个人的博客上找到世界上某个地方的教程.
    • 我担心的是,尽管金字塔文档似乎相当全面,但是当你最终进入文档未涵盖的领域时,你就会独立(直到你提交问题并收到回复,这看起来很像比阅读博客更冗长的过程).
  • 如果它消失了怎么办?
    • Django不会去任何地方.我不太了解金字塔做出同样的假设.如果我花了一年时间开发和维护这个应用程序,却发现在此期间金字塔支持已经消失,合并到一个不同的项目等等,该怎么办?
  • 为我的应用程序雇用未来的开发人员 - 他们很可能会知道Django,而不是金字塔.
    • 如果金字塔对已经了解Django的人有相对较小的学习曲线,这可能不是一个大问题?
  • 可能还有其他严重的缺点,我不知道使用这样一个年轻社区的框架.

无论如何,如果有经验的开发人员可以给我一些关于所有这些的反馈,我会很高兴.选择Pyramid而不是Django,我将承担多少风险?更一般地说,通过选择较旧技术而不是旧技术?

python django pyramid

12
推荐指数
0
解决办法
508
查看次数

将不同的URL映射到同一视图

这似乎微不足道,但我找不到这个问题的有效答案.

假设我有两个不同的链接'/'和'/ home',我希望它们指向同一个视图.(这表示用户是打开xyz.com还是xyz.com/home,将显示相同的页面).

在金字塔我试过

config.add_route('home','/')
config.add_route('home','home/')
Run Code Online (Sandbox Code Playgroud)

但它引发了以下异常

pyramid.exceptions.ConfigurationConflictError: Conflicting configuration actions
  For: ('route', 'home')
Run Code Online (Sandbox Code Playgroud)

我该如何实现呢?

python pyramid

12
推荐指数
1
解决办法
2190
查看次数

SQLAlchemy不会更新我的数据库

我正在使用SQLAlchemy-0.7.8制作Pyramid应用程序.我使用的是64位Python3.2.

问题是,为什么以下函数不向数据库提交任何内容?

def create_card(sText,sCard):
    """
    create a wildcard instance if all is well (ie,sCard match in sText)
    return 
        oCard, dCard
    otherwise return False,False
    """
    oMatch = re.search(sCard,sText)
    if oMatch:
        oCard = WildCard()
        #set up some stuff about the WildCard

        DBSession.add(oCard)
        DBSession.flush()
        dCard = {
                    'id'            : oCard.id,
                    'span'          : oMatch.span(),
                    'card'          : oCard.card_string,
                            }
        return oCard,dCard
    return False,False  
Run Code Online (Sandbox Code Playgroud)

我从另一个脚本导入DBSession.它的定义如下:

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
Run Code Online (Sandbox Code Playgroud)

这是一些背景信息:

我正在制作的应用程序用于通过使用正则表达式来表征大块HTML.如果应用程序卡住并且认为应该为一段文本匹配wilcard,那么将为用户提供一个小表格来填写.一旦表单被提交,就会调用create_card.如果通配符与字符串匹配,则创建WildCard实例.

WildCard类没有什么特别之处,它只存储一个字符串和一些整数.如果我打印出dCard,看起来WildCard已经成功提交,因为它有一个整数id.如果我没有在数据库会话上调用flush,则dCard ['id']为None.

id字段如下所示:

id = Column(Integer,Sequence('wild_seq'), primary_key=True)
Run Code Online (Sandbox Code Playgroud)

添加和刷新行会导致以下控制台输出:

2012-09-16 12:30:34,845 INFO  [sqlalchemy.engine.base.Engine][Dummy-2] INSERT INTO wildcard_wildcards (card_string, …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy pyramid python-3.2

12
推荐指数
1
解决办法
8439
查看次数

当MongoDB用作数据库时使用哪个python web框架(django或django-norel或pyramid)

我使用MongoDB作为我的主要(并且直到现在)数据库,因为谷歌及其提供的链接我在Django或金字塔之间感到困惑.

我对python很满意,但从未在python中进行过Web开发(我已经在PHP中完成了).现在因为我将使用Mongo所以我不会使用Django ORM会带走人们与Django相关联的易用性吗?

我是Django的新手(只需几个小时),所以我不确定ORM影响框架的哪些部分.

或者我应该使用带有django mongodb引擎的django fork django-norel(虽然它们没有被主动维护)或者我应该使用Pyramid,因为我打算使用jinja2作为我的模板层,这使得django的两部分对我无用.

从django中取出这些电池后,它仍然是一个有截止日期的人的框架吗?

建议吗?

python django mongodb pyramid

12
推荐指数
2
解决办法
5783
查看次数

当我尝试运行Pyramid项目时,为什么会出现DistributionNotFound错误?

我安装在我的新Windows 8(x64)中:

  • 蟒蛇-2.7
  • pywin32-218.win32-py2.7
  • setuptools的-0.6c11.win32-py2.7
  • 和金字塔(通过easy_install)

我试图运行我的金字塔项目:

pserve I:\Projects\PyramidProject\development.ini
Run Code Online (Sandbox Code Playgroud)

和pkg_resources.DistributionNotFound(req)被引发:

追溯

 I:\Projects\MyProject>pserve development.ini Traceback (most recent
 call last):   File "C:\Python27\Scripts\pserve-script.py", line 9, in
 <module>
     load_entry_point('pyramid==1.4b1', 'console_scripts', 'pserve')()   File
 "C:\Python27\lib\site-packages\pyramid-1.4b1-py2.7.egg\pyramid\scripts\ps
 erve.py", line 50, in main
     return command.run()   File "C:\Python27\lib\site-packages\pyramid-1.4b1-py2.7.egg\pyramid\scripts\ps
 erve.py", line 301, in run
     relative_to=base, global_conf=vars)   File "C:\Python27\lib\site-packages\pyramid-1.4b1-py2.7.egg\pyramid\scripts\ps
 erve.py", line 332, in loadserver
     server_spec, name=name, relative_to=relative_to, **kw)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 255, in loadserver
     return loadobj(SERVER, uri, name=name, **kw)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 271, in loadobj
     global_conf=global_conf)   File "C:\Python27\lib\site-packages\pastedeploy-1.5.0-py2.7.egg\paste\deploy\l
 oadwsgi.py", line 296, …
Run Code Online (Sandbox Code Playgroud)

python pyramid

12
推荐指数
1
解决办法
1万
查看次数

分离SQLAlchemy实例,以便不进行刷新

我想从我的会话中分离一个类的实例,但它仍然可以读取(不发出查询).我已经扫描了几天的文档,但我尝试的每一种方法都会导致这个消息

DetachedInstanceError: Instance <MyModel at 0x36bb190> is not bound to a Session;
attribute refresh operation cannot proceed
Run Code Online (Sandbox Code Playgroud)

我正在使用zope.sqlalchemyPyramid中的事务管理器.我希望在提交事务我的对象可用.我只需要它来读取"缓存"值,即在提交事务之前在其中的值.

我能弄清楚的唯一方法是包装类(或属性本身),然后手动跟踪更改(我可以这样做,但它真的很难看,而且根本不是pythonic).

那么有什么方法可以阻止SQLAlchemy尝试刷新这些值?

作为一个后备,我甚至可以只返回None,只要在事务提交后没有抛出上述错误

python sqlalchemy pyramid

12
推荐指数
2
解决办法
1万
查看次数

如何使用sqlalchemy创建外键引用

嗨,我无法理解如何使用sqlalchemy进行外键引用.我在我的数据库中创建了一个新的表客户端:

class Client(DeclarativeBase):

    __tablename__ = 'client'

    id = Column(Integer, primary_key=True)

    user_id = Column(
        Integer,
        ForeignKey('user.id', ondelete='CASCADE'),
        nullable=False,
        index=True,
    )



    orgname = Column(Unicode, nullable=False)

    def __init__(self, **kwargs):
        super(Client, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)

不是我想做这样的事情

 u = User(user_name=u'dusual')
 session.add(u)
 c = Client(user=u, orgname="dummy_org")
 session.add(c)
Run Code Online (Sandbox Code Playgroud)

但是sqlalchemy喊道:

(K,cls_.))类型错误:"用户"是用于客户端无效的关键字参数

现在不应该明白,应该允许用户作为关键字参数,我如何确保我的表能够采用用户关键字参数.

python sqlalchemy pyramid

12
推荐指数
1
解决办法
1万
查看次数

用于Ajax请求的Pyramid CORS

是否可以自动将Access-Control-Allow-Origin标题添加到由X-Requested-With金字塔中的ajax请求(带标题)启动的所有响应中?

python cors pyramid

12
推荐指数
2
解决办法
6612
查看次数

Cornice中的cornice.Service和cornice.resource有什么区别?

我已经多次阅读了文档,并搜索了这个问题的答案,但是很简单.具体来说,我已经研究了为服务定义服务Cornice API以及为资源定义资源.

我目前正在构建一个REST API,它具有与此类似的结构:

GET /clients             # Gets a list of clients
GET /clients/{id}        # Gets a specific client
GET /clients/{id}/users  # Gets a specific clients users
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?我应该使用服务或资源还是两者兼而有之?而且,如果两者都是,怎么样?

api rest python-3.x pyramid cornice

12
推荐指数
2
解决办法
1681
查看次数