小编Pat*_*Yan的帖子

Flask蓝图静态目录不起作用?

根据Flask自述文件,可以访问蓝图静态文件blueprintname/static.但由于某种原因,它不起作用.

我的蓝图是这样的:

  • app/frontend/views.py :

    frontend = Blueprint('frontend', __name__, 
                         template_folder='templates',
                         static_folder='static')
    
    @frontend.route('/') etc...
    
    Run Code Online (Sandbox Code Playgroud)
  • app/frontend/js/app.js :我的javascript

  • 在Flask应用程序中注册的蓝图(路线工作和一切)

当我去的时候abc.com/frontend/static/js/app.js,它只给出了404.

当我按照Flask自述文件获取我的静态文件时:

<script src="{{url_for('frontend.static', filename='js/app.js')}}"></script>
Run Code Online (Sandbox Code Playgroud)

输出是

<script src="/static/js/app.js"></script>
Run Code Online (Sandbox Code Playgroud)

哪个也行不通.我的根app/static/文件夹中没有任何内容.

我无法访问我的蓝图中的任何静态文件!烧瓶读我说它应该工作!

admin = Blueprint('admin', __name__, static_folder='static')
Run Code Online (Sandbox Code Playgroud)

默认情况下,路径的最右边部分是它在Web上公开的位置.由于该文件夹在此处称为静态,因此它将在蓝图+/static的位置可用.假设蓝图已注册为/ admin,静态文件夹将位于/ admin/static.

python flask

25
推荐指数
4
解决办法
2万
查看次数

命令python setup.py egg_info失败,错误代码为1

我想做make install,但我一直在收到错误.我已经尝试过以下答案:由于egg_info错误,无法通过pip安装

Command python setup.py egg_info failed with error code 1 in /abc/abc_env/build/MySQL-python
Storing debug log for failure in /Users/Pat/.pip/pip.log
Run Code Online (Sandbox Code Playgroud)

完整的调试日志:http://pastebin.com/cnGgWU4G

这是Makefile:

virtualenv-2.7 my_env && \
source my_env/bin/activate && \
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

看起来问题只发生在虚拟环境中.我能够pip install mysql-python没有问题,但pip install -r requirements.txt在尝试安装时有错误mysql-python

requirements.txt如下:

Flask==0.10.1
Jinja2==2.7.1
MarkupSafe==0.18
MySQL-python==1.2.4
PyYAML==3.10
SQLAlchemy==0.8.3
Tempita==0.5.1
Werkzeug==0.9.4
argparse==1.2.1
dataset==0.3.13
decorator==3.4.0
docopt==0.4.0
itsdangerous==0.23
mandrill==1.0.53
mysql-connector-python==1.0.12
requests==2.0.1
sqlalchemy-migrate==0.7.2
wsgiref==0.1.2
Run Code Online (Sandbox Code Playgroud)

python pip

15
推荐指数
2
解决办法
6万
查看次数

Flask werkzeug request.authorization是none,但授权标头存在

我正在发布一些JSON数据并添加Authorization标题.但是,请求对象没有正确的授权属性.HTTP_AUTHORIZATION并且headers都显示正确的授权详细信息.

{'authorization': None,
 'cookies': {},
 'environ': {'CONTENT_LENGTH': '81',
             'CONTENT_TYPE': u'application/json',
             'HTTP_AUTHORIZATION': 'testkey:',
             'HTTP_CONTENT_LENGTH': '81',
             'HTTP_CONTENT_TYPE': 'application/json',
             'HTTP_HOST': 'test',
             'PATH_INFO': '/v1/test',
             'QUERY_STRING': '',
             'REQUEST_METHOD': 'POST',
             'SCRIPT_NAME': '',
             'SERVER_NAME': 'test',
             'SERVER_PORT': '80',
             'SERVER_PROTOCOL': 'HTTP/1.1',
             'flask._preserve_context': False,
             'werkzeug.request': <Request 'http://test/v1/test' [POST]>,
             'wsgi.errors': <open file '<stderr>', mode 'w' at 0x10d5471e0>,
             'wsgi.input': <_io.BytesIO object at 0x11074c410>,
             'wsgi.multiprocess': False,
             'wsgi.multithread': False,
             'wsgi.run_once': False,
             'wsgi.url_scheme': 'http',
             'wsgi.version': (1, 0)},
 'headers': EnvironHeaders([('Authorization', testkey:'), ('Host', u'test'), ('Content-Length', u'81'), ('Content-Type', u'application/json')]),
 'shallow': False,
 'url': …
Run Code Online (Sandbox Code Playgroud)

werkzeug flask

12
推荐指数
3
解决办法
8353
查看次数

jinja2功能和过滤器之间的区别?

我正在编写一些函数来处理模板中的日期和文本格式.

def coolfunc(s):
    return s + ' is cool'

 app.jinja_env.globals.update(coolfunc=coolfunc)
 app.jinja_env.filters['coolfunc'] = coolfunc
Run Code Online (Sandbox Code Playgroud)

模板:

{{ coolfunc(member.name) }}
{{ member.name | coolfunc }}
Run Code Online (Sandbox Code Playgroud)

输出:

John is cool
John is cool
Run Code Online (Sandbox Code Playgroud)

我不确定函数和过滤器之间的真正区别是什么.在我看来,过滤器看起来更干净?

python jinja2 flask

11
推荐指数
1
解决办法
922
查看次数

如何强制Composer使用https://而不是git://?

我有类似的东西

"repositories": [
    {
        "type": "package",
        "package": {
            "name": "myrepo",
            "version": "dev-master",
            "source": {
                "url": "https://github.com/me/myrepo.git",
                "type": "git",
                "reference": "master"
            }
        }
    },
Run Code Online (Sandbox Code Playgroud)

但是当Composer拉出回购时,遥控器(origincomposer)就会.git/config被设置为git://github.com/me/myrepo.git.

[remote "origin"]
    url = git://github.com/me/myrepo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:me/myrepo.git
[branch "master"]
    remote = composer
    merge = refs/heads/master
[remote "composer"]
    url = git://github.com/me/myrepo.git
    fetch = +refs/heads/*:refs/remotes/composer/*
Run Code Online (Sandbox Code Playgroud)

我无法推动它,因为Github无法使用git://.我必须手动将其更改为https://然后推送.我https://在URL中指定了,但为什么这不受尊重?

php git github composer-php

9
推荐指数
2
解决办法
8501
查看次数

SQLAlchemy为伟大的孙子代表链接代理?

我有四个类,像这样:Group,Parent,Child,Toy.

  • Group有一种parents关系指向Parent
  • Parent有一种children关系指向Child
  • Child有一种toys关系指向Toy

Parent有一个toys association_proxy产生所有Toy的S Parent的孩子们.

我希望能够获得一组中的所有玩具.我试图创建一个association_proxyGroup链接到Parenttoys,但它会产生这样的:

[[<Toy 1>, <Toy 2>], [], [], []]
Run Code Online (Sandbox Code Playgroud)

当我想要这个:

[<Toy 1>, <Toy 2>]
Run Code Online (Sandbox Code Playgroud)

如果Parentchildren没有任何Toys,则toys关联代理[].但是,第二个关联代理不知道要排除空列表.此外,列表应折叠.反正有没有让这个工作?

class Group(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    created_at = db.Column(db.DateTime, default=utils.get_now_datetime)
    name = db.Column(db.String(80, convert_unicode=True))
    # …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

9
推荐指数
1
解决办法
1420
查看次数

是否有任何Python IDE可以像R一样运行一些代码?

我认为这对初学者来说是一个非常有用的功能.当我学习R时,我会将每个课程的笔记保存在一个文件中并执行我想要的行.现在我正在学习Python,我必须将每个新东西保存在不同的文件中.是否没有可以做R所做的IDE?我目前正在使用PyCharm.

python ide

8
推荐指数
2
解决办法
5966
查看次数

如何让Flask-SQLAlchemy对象为Jinja模板加载关系子元素?

我有User和Post的基本模型.在我的用户模型中,我有

posts = db.relationship('Post', backref='user', lazy='dynamic')
Run Code Online (Sandbox Code Playgroud)

但是,当我做的事情

return render_template('user.html', users=users)
Run Code Online (Sandbox Code Playgroud)

我想做的事情

{% for user in users %}
    <tr>
        <td>{{ user.id }}</td>
        <td>{{ user.posts|length }}</td>
    </tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.帖子是查询,而不是b/c的对象lazy='dynamic'.如果我更改lazy='joined',我可以执行上述操作,但随后我会在查询用户时为用户加载所有帖子.

我尝试添加.options(joinedload('posts'))到我的查询,但它说

InvalidRequestError:'User.posts'不支持对象填充 - 无法应用急切加载.

任何帮助表示赞赏.

python sqlalchemy jinja2 flask flask-sqlalchemy

7
推荐指数
1
解决办法
4794
查看次数

(unittest)测试Flask-Security:无法通过登录页面

我正在尝试将测试添加到我的基本应用程序中.访问所有内容需要登录.

这是我的测试用例类:

class MyAppTestCase(FlaskTestCaseMixin):

    def _create_app(self):
        raise NotImplementedError

    def _create_fixtures(self):
        self.user = EmployeeFactory()

    def setUp(self):
        super(MyAppTestCase, self).setUp()
        self.app = self._create_app()
        self.client = self.app.test_client()
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        self._create_fixtures()
        self._create_csrf_token()

    def tearDown(self):
        super(MyAppTestCase, self).tearDown()
        db.drop_all()
        self.app_context.pop()

    def _post(self, route, data=None, content_type=None, follow_redirects=True, headers=None):
        content_type = content_type or 'application/x-www-form-urlencoded'
        return self.client.post(route, data=data, follow_redirects=follow_redirects, content_type=content_type, headers=headers)

    def _login(self, email=None, password=None):
        email = email or self.user.email
        password = password or 'password'
        data = {
            'email': email,
            'password': password,
            'remember': 'y'
            }
        return self._post('/login', …
Run Code Online (Sandbox Code Playgroud)

python flask flask-login flask-security python-unittest

5
推荐指数
1
解决办法
2130
查看次数