我有一个MyModel带有布尔字段的模型active
在其他地方,我正在检索一个查询集:
qs = MyModel.Objects.filter(....)
Run Code Online (Sandbox Code Playgroud)
如何active=False为此中的所有对象设置qs?
我正在将我的项目从Django 1.8.2升级到1.9.7,我收到了这个警告:
WARNINGS:
my_app.my_model.date_available: (fields.W161) Fixed default value provided.
HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want.
If you want to have the current date as default, use `django.utils.timezone.now
Run Code Online (Sandbox Code Playgroud)
这是my_app/models.py中的行:
from django.utils import timezone
...
class my_model(models.Model):
...
datetime_released = models.DateTimeField(default=timezone.now() )
Run Code Online (Sandbox Code Playgroud)
如果我删除括号而改为使用:
datetime_released = models.DateTimeField(default=timezone.now )
Run Code Online (Sandbox Code Playgroud)
Django警告消失了.这两者有什么区别?
在我的项目的另一个领域,我在queryset过滤器中使用timezone.now():
def date_available(self):
return self.filter(date_available__lte = timezone.now())
Run Code Online (Sandbox Code Playgroud)
在这里,如果删除括号,则会抛出错误:
TypeError: expected string or buffer
我可以通过添加/删除所需的括号内同时获得这两项工作,但之间有什么区别timezone.now() …
我正在为我的网站使用Let's Encrypt,我的cron作业中出现错误,当我尝试手动续订($ sudo letsencrypt renew)时导致错误:
错误:urn:acme:error:rateLimited ::给定类型的请求太多::创建新authz时出错::当前待处理的授权太多.
我的证书已经过期,所以我不能等待7天才能清除.
该让我们加密网站表示我可以清除挂起的申请:
如果您有大量待处理的授权对象并且正在获得速率限制错误,则可以通过向其中一个挑战提交JWS签名的POST来触发对这些授权对象的验证尝试,如ACME规范中所述.
我有带URL的日志,但我不明白如何手动发送"JWS签名的POST".
这是从日志中被拒绝的今天的例子:
2017-03-31 06:40:32,180:DEBUG:root:Sending POST request to https://acme-v01.api.letsencrypt.org/acme/new-authz.
args: (), kwargs: {
'data': '{
"header": {
"alg": "RS256",
"jwk": {"e": "AQAB", "kty": "RSA", "n": "srgrg....huXi0sQ"}
},
"protected": "rsgrgs....ZJIn0",
"payload": "srgrg....In0",
"signature": "sgggserg....Tc-Q"
}'
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我刚刚开始在我现有的Django项目上测试PyCharm,它无法识别我项目中任何来自应用程序的导入:
在my_app1/models.py:
from my_app2.models import thing
"未解决的参考'my_app2'"
为什么是这样?我的项目的目录结构与推荐的布局相匹配,并且运行没有错误,只是PyCharm的魔法不想对它起作用.
它似乎与这个问题有关: 在django项目中导入应用程序
但我无法弄清楚我做错了什么.如果我尝试:
from ..my_app2.models import thing
PyCharm错误消失了,它可以自动预测等等.但是当我运行项目时,Django抛出:
ValueError: attempted relative import beyond top-level package
编辑:
项目结构:
my_project/
src/
manage.py
db.sqlite3
my_app1/
templates/
__init.py__
admin.py
models.py
urls.py
views.py
...
my_app2/
templates/
__init.py__
admin.py
models.py
urls.py
views.py
...
my_project_app/
settings/
__init.py__
urls.py
...
Run Code Online (Sandbox Code Playgroud) schema_editor.connection.alias什么时候需要在方法中使用它migrations.RunPython,为什么?
在数据迁移中使用 RunPython 时,django 建议您应该使用schema_editor.connection.alias:
from django.db import migrations
def forwards_func(apps, schema_editor):
# We get the model from the versioned app registry;
# if we directly import it, it'll be the wrong version
Country = apps.get_model("myapp", "Country")
db_alias = schema_editor.connection.alias
Country.objects.using(db_alias).bulk_create([
Country(name="USA", code="us"),
Country(name="France", code="fr"),
])
class Migration(migrations.Migration):
dependencies = []
operations = [
migrations.RunPython(forwards_func, reverse_func),
]
Run Code Online (Sandbox Code Playgroud)
警告
RunPython不会神奇地为您改变模型的连接;您调用的任何模型方法都将转到默认数据库,除非您为它们提供当前数据库别名(可从 获得
schema_editor.connection.alias,其中schema_editor是函数的第二个参数)。*
但是描述数据迁移的文档部分根本没有提到alias:
from django.db import migrations …Run Code Online (Sandbox Code Playgroud) 我有 3 个设置文件:
base.py 有:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes'
...
Run Code Online (Sandbox Code Playgroud)
但是我有一些只需要在我的开发环境中使用的应用程序,例如,debug-toolbar.
我在 development.py 中试过这个:
INSTALLED_APPS += (
'debug_toolbar',
)
Run Code Online (Sandbox Code Playgroud)
但得到错误: NameError: name 'INSTALLED_APPS' is not defined
设置文件的连接方式如下:
__init__.py
from .base import *
try:
from .production import *
except:
from .development import *
Run Code Online (Sandbox Code Playgroud)
如何区分我的生产/开发环境之间已安装的应用程序?
在 Visual Studio Code 中使用 Python 编程时,有没有办法显示重写方法的指示符?
我正在寻找与 PyCharm 在重写超类方法时显示的左侧空白处的图标类似的内容?
我有一个python方法(感谢这个片段),它<a>使用BeautifulSoup和Django的urlize 在一些未格式化的链接上获取一些html和包装标签:
from django.utils.html import urlize
from bs4 import BeautifulSoup
def html_urlize(self, text):
soup = BeautifulSoup(text, "html.parser")
print(soup)
textNodes = soup.findAll(text=True)
for textNode in textNodes:
if textNode.parent and getattr(textNode.parent, 'name') == 'a':
continue # skip already formatted links
urlizedText = urlize(textNode)
textNode.replaceWith(urlizedText)
print(soup)
return str(soup)
Run Code Online (Sandbox Code Playgroud)
样本输入文本(由第一个print语句输出)是这样的:
this is a formatted link <a href="http://google.ca">http://google.ca</a>, this one is unformatted and should become formatted: http://google.ca
Run Code Online (Sandbox Code Playgroud)
生成的返回文本(由第二个print语句输出)是这样的:
this is a formatted link <a href="http://google.ca">http://google.ca</a>, this one is unformatted and should …Run Code Online (Sandbox Code Playgroud) 我正在用SUBJECT数组变量中的值替换文本,如下所示:
#!/bin/bash
# array of subjects, the ampersand causes a problem.
subjects=("Digital Art" "Digital Photography" "3D Modelling & Animation")
echo $subjects[2] # Subject: 3D Modelling & Animation
sed -i -e "s/SUBJECT/${subjects[2]}/g" test.svg
Run Code Online (Sandbox Code Playgroud)
SUBJECT结果文本不是替换文本,而是如下所示:
3D Modelling SUBJECT Animation
Run Code Online (Sandbox Code Playgroud)
如何&在 sed 中包含 & 号作为文字并使其正确回显?
django ×7
python ×7
bash ×1
certbot ×1
django-apps ×1
imagefield ×1
lets-encrypt ×1
pycharm ×1
sed ×1
timezone ×1