我开始使用 Django 构建 Web 应用程序,现在我的大部分项目都依赖 Flask。我认为@app.routeFlask 中的装饰器很简单,但是一旦文件越来越大,“django 风格”的 url 映射似乎更有利。
为了实现这一点,我使用了一种变通方法来模拟 Django 的 url 映射,但我不确定这是否是一个好的做法,并担心可能存在一些性能问题。
这是一个最小的例子:
# project/views.py
def index():
print "hello index!"
def get_users():
print "hello users!"
# project/urls.py
from project import views
# store url mapping arguments in a list of tuples following this pattern:
# (endpoint, methods, viewfunc)
urls = [
('/', ['GET'], views.index),
('/users', ['GET'], views.get_users)
]
Run Code Online (Sandbox Code Playgroud)
然后最后:
# project/__init__.py
from flask import Flask
from project.urls import urls
app = Flask(__name__)
# Loop through …Run Code Online (Sandbox Code Playgroud) 我尝试了两种方法,但都不起作用,我在谷歌上搜索并没有找到任何合适的解决方案。我的代码如下所示:
intField = Column(SmallInt(), length=5)
Run Code Online (Sandbox Code Playgroud)
错误说:
Unknown arguments passed to Column: ['length']
Run Code Online (Sandbox Code Playgroud)
我也尝试过,知道它不应该工作,这个解决方案:
intField = Column(SmallInt(5))
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为此 SqlAlchemy 数据类型不接受参数。
有任何想法吗?
[更新]
我使用的MySQL是数据库引擎,所以这里的解决方案是导入mysql自己的Integer类型,然后指定我想要的长度。
在上面的例子中,我只需要这样做:
from sqlalchemy.dialects import mysql
Integer = mysql.INTEGER
class ...
...
intField = Column(Integer(5))
Run Code Online (Sandbox Code Playgroud)
但我仍然想知道是否有更通用的方法?
更新[09/12/2017 16:58 EST]
在此问题的底部添加了为什么我犹豫是否将本机支持的非相对导入与我自己的模块一起使用的原因。
更新[09/12/2017 12:58 EST]:
根据请求,我使下面的文件结构反映了我的实际用例。这是一个嵌套的视图模块,它请求目录树上某处的实用程序模块。
每个请求
在 TypeScript 和 ES6 中,都可以通过以下方式导入自定义模块
// Relative
import { numberUtil } from './number_util';
// OR
// Non-relative
import { numberUtil } from 'number_util';
Run Code Online (Sandbox Code Playgroud)
根据 TypeScript 文档(链接),应该:
...为您自己的模块使用相对导入,保证在运行时保持其相对位置。
... 在导入任何外部依赖项时使用非相对路径。
我的问题是我有一个这样的项目结构:
project/
|--utils
| |--number_util.ts
|--views
| |--article_page
| |-- editor_view
| |--editor_text_area.ts
Run Code Online (Sandbox Code Playgroud)
当我包含utils/number_util在我的editor_text_area模块中时,import 语句如下所示:
import { numberUtil } from './../../../utils/number_util';
Run Code Online (Sandbox Code Playgroud)
这很长而且不可读,最糟糕的是,难以维护:每当我需要移动时editor_text_area,我将不得不更新每个这些相对路径,同时我可以使用非相对方式
import { numberUtil } from 'utils/number_util';
Run Code Online (Sandbox Code Playgroud)
有没有人对如何最好地进行模块导入以实现最高的可读性和可维护性有任何建议?
但是使用非相对方式会带来一个问题(官方文档不推荐这种方式除外):如果我安装了一个npm与我正在导入的模块同名的模块怎么办?在这一点上,它不如上面提到的更丑陋的替代方案安全。
在TypeScript中,目前可以获取接口的所有"键"的联合类型,例如:
interface foo {
name: string;
age: number;
}
function onlyTakeFooKeys(key: keyof foo) {
// do stuff with key
}
Run Code Online (Sandbox Code Playgroud)
并且编译器将强制执行onlyTakeFooKeys只能使用name或调用age.
我的用例是我需要获得所有类型的接口/对象成员的联合类型.在给定的接口foo示例中,我期待这样的事情:
some_operator foo; //=> string | number
Run Code Online (Sandbox Code Playgroud)
这目前是否可以实现?
假设接口具有任意数量的成员,这使得难以进行硬编码.这需要在编译时完成.
我只想更改导航器选定区域的范围(和/或手柄的开始和结束位置),但我从官方文档中获得的只是:
chart.xAxis[1].setExtremes(min, max)
Run Code Online (Sandbox Code Playgroud)
这改变了整个导航仪的范围.
这是一个更好地解释我的案例的小提琴:http: //jsfiddle.net/yvw8wje4/
任何想法如何使这成为可能?(如果可能的话)
python ×2
typescript ×2
django ×1
ecmascript-6 ×1
flask ×1
highcharts ×1
highstock ×1
javascript ×1
jquery ×1
mysql ×1
sqlalchemy ×1
url-mapping ×1