这是我希望SQLAlchemy要做的事情:
blesk_dev=# alter table address add column reg_at timestamp without time zone default (now() at time zone 'utc');
ALTER TABLE
Run Code Online (Sandbox Code Playgroud)
也就是说,我想为列设置默认的UTC时间。如上所示,在纯psql中,此操作成功。
这就是SQLAlchemy代码中的样子:
reg_at = db.Column(db.DateTime, server_default="(now() at time zone 'utc')")
Run Code Online (Sandbox Code Playgroud)
但是当我尝试迁移时,我得到了:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) syntax error at or near "utc"
LINE 1: ...STAMP WITHOUT TIME ZONE DEFAULT '(now() at time zone 'utc')'
^
"ALTER TABLE address ADD COLUMN reg_at TIMESTAMP WITHOUT TIME ZONE DEFAULT '(now() at time zone 'utc')'" {}
Run Code Online (Sandbox Code Playgroud)
因此,我认为单引号/双引号存在问题。
我试过了
"(now() at time zone \'utc\')"
Run Code Online (Sandbox Code Playgroud)
但这会给我同样的错误。
然后,我换了引号:
'(now() at …Run Code Online (Sandbox Code Playgroud) 我使用 virtualenvwrapper 在 Pycharm 中创建了一个 Django 项目。我的蟒蛇位于~/.virtualenvs/django_cpa. 后来我将我的 virtualenv 重命名为pubscout,并将 Pycharm 的 Python 解释器更改为/Users/1111/.virtualenvs/pubscout/bin/python. 这适用于项目中的文件:
但是,当我尝试从该项目的环境中运行暂存文件时,我收到一个错误,表明 Pycharm 仍在尝试使用旧的解释器路径进行暂存:
我该如何解决?
我正在尝试从使用Django Test Client切换到RequestFactory来加速我的测试.但是,RequestFactory生成的请求不适合kwargs视图.
示例:这是我的观点
class SomeView(View):
def get(self, request, *args, **kwargs):
return JsonResponse({'your kwargs': str(kwargs)})
Run Code Online (Sandbox Code Playgroud)
用urlconf
url(r'^some_view/(?P<some_kwarg>[\-0-9a-fA-F]+)/$',
views.SomeView.as_view(),
name='some_view'),
Run Code Online (Sandbox Code Playgroud)
和两个测试:
def test_different_kwargs():
c = Client()
response = c.get(
reverse('bots:some_view',
kwargs={'some_kwarg': '12345'}),
)
print('\n\nResponse for TestClient: ', response.content.decode())
rf = RequestFactory()
request = rf.get(
reverse('bots:some_view',
kwargs={'some_kwarg': '12345'}),
)
response = SomeView.as_view()(request)
print('\n\nResponse for RequestFactory: ', response.content.decode())
Run Code Online (Sandbox Code Playgroud)
他们生产的是:
Response for TestClient: {"your kwargs": "{'some_kwarg': '12345'}"}
Response for RequestFactory: {"your kwargs": "{}"}
Run Code Online (Sandbox Code Playgroud)
那么,RequestFactory如果丢失了url kwargs,有什么意义呢?或者有办法将它们以某种方式放入视图中吗?
我有一个奇怪的问题.
我正在使用SQLAlchemy构建Flask应用程序.我有一个模型文件,即models.py.我有一个用户模型.
如果我打开"views.py"并插入一个字符串
import models
Run Code Online (Sandbox Code Playgroud)
然后使用用户模型
u=models.User.query.filter_by(name='John',password='Doe').first()
Run Code Online (Sandbox Code Playgroud)
一切正常.
但如果不是"进口模式",我会说
from models import User
Run Code Online (Sandbox Code Playgroud)
Python崩溃并说:
ImportError: cannot import name User
Run Code Online (Sandbox Code Playgroud)
这怎么可能?
我正在为我们业务的电子商务部分研究 Django Oscar。所需的功能之一是我们需要在一个 Oscar 实例上托管多个商店,即每个店主都应该管理自己的产品、自己的合作伙伴等。并且不应该访问其他所有者的内容。
Google 表示从 0.6 版本开始就有此功能:https://django-oscar.readthedocs.io/en/releases-0.6/howto/multi_dealer_setup.html
但当前版本(截至今天的1.5)并没有提到这个功能。奥斯卡后期版本如何实现多租户?
假设我有一个Child类是类的子Parent类,以及一个接受Parent子类实例列表的函数:
from typing import List
class Parent:
pass
class Child(Parent):
pass
def func(objects: List[Parent]) -> None:
print(objects)
children = [Child()]
func(children)
Run Code Online (Sandbox Code Playgroud)
mypy在此运行会产生错误:
error: Argument 1 to "func" has incompatible type "List[Child]"; expected "List[Parent]"
Run Code Online (Sandbox Code Playgroud)
如何为此创建类型?
PS有一种方法可以使用Sequence类型修复此特定错误:
def func(objects: Sequence[Parent]) -> None:
print(objects)
Run Code Online (Sandbox Code Playgroud)
但这在其他类似情况下无济于事。我需要一个List,而不是一个Sequence。
我有一个模特News:
class News(db.Model):
__tablename__ = 'news'
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.String)
active_from = db.Column(db.DateTime)
active_until = db.Column(db.DateTime)
Run Code Online (Sandbox Code Playgroud)
它被整合成flask-admin如此:
class MyModelView(ModelView):
def is_accessible(self):
return current_user.usergroup.name == 'admin'
admin.add_view(MyModelView(News, db.session))
Run Code Online (Sandbox Code Playgroud)
但当我打开我的管理页面时,我看到了一个input type='text'小部件news.content.我怎么能把它放在textarea那里呢?
我正在研究 Telegram 的 Telethon 库,它可以使用 Telegram API 充当 Telegram 客户端(重要提示:这是Telegram 客户端 API,而不是 Bot API)。
我需要的功能是创建群聊并邀请用户。当我添加联系人列表中的某人时,这很好用:
import telethon
from telethon.tl.functions.messages import CreateChatRequest
client = telethon.TelegramClient('some_session', 'key', '6284f5acf91b03somehash441ac9eef319')
client.start()
client(CreateChatRequest(['+79297226653'], 'Test Group')) # number from my contact list
Run Code Online (Sandbox Code Playgroud)
但是,如果我传递的号码不在我的联系人列表中(我确定该电话号码已在 Telegram 中注册),则此操作会中断
File "/Users/1111/.virtualenvs/inviter-WB5rPISo/lib/python3.6/site-packages/telethon/telegram_client.py", line 1680, in _get_entity_from_string
'Cannot turn "{}" into any entity (user or chat)'.format(string)
TypeError: Cannot turn "+79291101517" into any entity (user or chat)
Run Code Online (Sandbox Code Playgroud)
我怀疑这只CreateChatRequest适用于我的PeerUser手机,即此方法禁止使用非对等电话。
所以问题是,如果某人不是我的联系人之一,我如何将他添加到群聊中?
我正在尝试创建一个使用 react-select 和 typescript 的示例组件。
为此,我创建了一个功能组件并添加了react-select docs 中的默认示例:
const options = [
{value: 'chocolate', label: 'Chocolate'},
{value: 'strawberry', label: 'Strawberry'},
{value: 'vanilla', label: 'Vanilla'},
];
const MyComponent = () => {
const [selectedOption, setSelectedOption] = useState('chocolate');
const handleChange = (option: string) => {
setSelectedOption(option);
};
return (
<Select
value={selectedOption}
onChange={(option) => handleChange(option)}
options={options}
/>
);
};
Run Code Online (Sandbox Code Playgroud)
但是,这给了我一个错误:
Overload 1 of 2, '(props: Readonly<Pick<Props<OptionTypeBase>, string | number> & Props<OptionTypeBase> & Props<OptionTypeBase>>): StateManager<...>', gave the following error.
Type 'string' is …Run Code Online (Sandbox Code Playgroud) 假设我们有一个字符串,1abcd1efg1hjk1lmn1并希望在1-s 之间找到东西.我们做的是
re.findall('1.*?1','1abcd1efg1hjk1lmn1')
Run Code Online (Sandbox Code Playgroud)
得到两个结果
['1abcd1', '1hjk1']
Run Code Online (Sandbox Code Playgroud)
好吧,我明白了.但如果我们这样做
re.findall('1.*?1hj','1abcd1efg1hjk1lmn1')
Run Code Online (Sandbox Code Playgroud)
为什么它在1s而不是一个之间抓两个间隔?为什么我们得到['1abcd1efg1hj']而不是['1efg1hj']?这不是懒惰应该做的吗?
我在使用 csrf 令牌测试视图时遇到问题。
这段代码
class ViewTests(TestCase):
def test_bets_view(self):
login_page = self.client.get('/users/login/')
print(login_page.content)
Run Code Online (Sandbox Code Playgroud)
返回带有 CSRF 隐藏输入的 HTML。
我需要将这个东西与以前的 HTML 进行比较,
expected_html = render_to_response('login.html',
dictionary={'form': LoginForm()})
Run Code Online (Sandbox Code Playgroud)
没有隐藏的 CSRF 输入。所以断言失败。
如何在测试客户端中禁用 CSRF 渲染?
我希望我的链接在悬停时在它们旁边显示一个字体 - 真棒图标.整条线看起来像这样:
<a href="#" class="link">link</a> <span class="someicon"></span>
Run Code Online (Sandbox Code Playgroud)
当课程"链接"悬停时,如何使课程"someicon"可见?
编辑:
谢谢大家,我想出了一个更好的解决方案.不需要额外的类和DOM元素:
.link:hover::after {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
content: "\00a0\f040";
text-decoration: none;
}
Run Code Online (Sandbox Code Playgroud) python ×8
django ×4
sqlalchemy ×2
csrf ×1
css ×1
django-oscar ×1
flask ×1
flask-admin ×1
html ×1
import ×1
models ×1
mypy ×1
postgresql ×1
pycharm ×1
react-select ×1
reactjs ×1
regex ×1
telegram ×1
telethon ×1
testing ×1
typescript ×1