当我们处理本地文件时,我正在尝试做的事情相当简单,但是当我尝试使用远程URL执行此操作时会出现问题.
基本上,我正在尝试从URL中提取的文件中创建PIL图像对象.当然,我总是可以获取URL并将其存储在临时文件中,然后将其打开到图像对象中,但这样效率非常低.
这就是我所拥有的:
Image.open(urlopen(url))
Run Code Online (Sandbox Code Playgroud)
它散开了抱怨,这seek()是不可用的,所以我试过这个:
Image.open(urlopen(url).read())
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.有没有更好的方法来做到这一点,或者写一个临时文件是可接受的做这种事情的方式?
有145个叉子,125个未解决的问题,以及差不多2年前的最后一个版本,django-piston似乎正在接近放弃软件,因为我正在研究的项目可能是一个很大的项目,我想要标准化的东西是会有一段时间.在Python/Django社区中是否存在类似于对REST API服务的偏好的共识?即使它是145个叉子中的一个?理想情况下,我想找到一些与@ jacobian的REST Worst Practices相配的东西
我知道在SO上有很多这样的问题,但它们似乎都没有回答我的特定问题.
据我所知,Django的ALLOWED_HOSTS价值是阻止任何80没有适当Host:值的IP 端口请求,并且当请求进入时没有正确的值时,Django会给我发电子邮件.我也知道光滑的Nginx黑客会让这个问题消失,但我试图了解一个这样的请求的性质,并确定这是否是一个我需要担心的安全问题.
这些请求是有道理的:
[Django] ERROR: Invalid HTTP_HOST header: '203.0.113.1'. You may need to add u'203.0.113.1' to ALLOWED_HOSTS.
Run Code Online (Sandbox Code Playgroud)
但是这一种让我感到害怕:
[Django] ERROR: Invalid HTTP_HOST header: u'/run/my_project_name/gunicorn.sock:'.
Run Code Online (Sandbox Code Playgroud)
这是不是意味着请求者发送Host: /run/my_project_name/gunicorn.sock到服务器?如果是这样,他们如何拥有我的.sock文件的路径名?我的服务器是否以某种方式泄露了这些信息?
另外,当我正在运行Django 1.6.5时,我不明白为什么我收到这些电子邮件,因为这张票已被标记固定一段时间了.
有人可以解释我所缺少的东西吗?
这是我的settings.LOGGING变量:
{
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}
},
'formatters': {
'simple': {'format': '%(levelname)s %(message)s'},
'verbose': {'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'verbose',
'level': …Run Code Online (Sandbox Code Playgroud) 我的主要开发机器是(Raspberry Pi) x86_64,而我的一些部署环境是arm7vl(Raspberry Pi)。对于大多数 Python 开发来说,这不是问题,但某些 Python 库仅在PyPI forx86_64或piwheels for aarmv7l. 这导致使用诗歌遇到一些困难。作为一个简单的示例,这是在计算机pyproject.toml上创建的文件x86_64:
[tool.poetry]
name = "poetrytest"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.9"
opencv-python = "^4.5.5"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Run Code Online (Sandbox Code Playgroud)
相应的poetry.lock文件包含从 PyPI 中提取的文件的哈希值,当您运行时,poetry install一切都会按预期工作。 但是,如果将这两个文件复制到 Raspberry Pi,安装将无法找到合适的.whl文件,因此会退回到尝试从源代码构建,这大约需要 2 小时并且失败:-(
要使其在 Pi 上工作,您需要将此块添加到pyproject.toml:
[[tool.poetry.source]]
name = "piwheels"
url …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个简单的应用程序,让用户授予我的代码权限,以写入她的页面的Facebook流.据我了解,它应该像以下一样简单:
我已经读了几天维基.关于pyfacebook的注释至少已经过时了一年,人们已经向我指出了Django 的socialauth应用程序,它看起来同样过时了,专注于针对用户而不是他们的页面.我甚至不能在那里做#1,让#2和3.
如果有人可以告诉我如何使用Django/Python来请求/获得写入Facebook流的许可,那将是一个很好的开始.
任何帮助将不胜感激.
我有一个简单的表格
class MyForm(forms.Form):
...
fieldname = forms.CharField(help_text="Some help text")
Run Code Online (Sandbox Code Playgroud)
然后,{{ form.as_ul }}如果我愿意的话,我可以用django方便地显示这个表单,现在我需要设计help_text的风格,我不知道如何.Django似乎没有将该字符串包装在任何可以让我的CSS到达它的内容中,所以此刻,我已经恢复到:
class MyForm(forms.Form):
...
fieldname = forms.CharField(help_text='<div class="helptext">Some help text</div>')
Run Code Online (Sandbox Code Playgroud)
我知道这是错的,所以我在这里寻求更好的建议.
我有两个型号:
class User(models.Model):
name = models.CharField(max_length=32)
class Referral(models.Model):
referring_user = models.ForeignKey(User, related_name="referrals")
referred_user = models.ForeignKey(User, related_name="referrers")
percentage = models.PositiveIntegerField()
Run Code Online (Sandbox Code Playgroud)
这个想法是每个用户都有n推荐人,至少应该有一个推荐人.每个推荐人都有一个percentage值,当添加到其他推荐人时,应该加起来为100%.
因此,用户"Alice"可能有推荐人"Bob"(50%)和"Cynthia"(50%),而用户"Donald"可能有一个推荐人:"Erin"(100%).
我遇到的问题是验证.有没有办法(最好是与Django管理员一起使用的方式admin.TabularInline),我可以验证拒绝保存a User如果总和Refferrals != 100%?
理想情况下,我希望这发生在表单/管理员级别而不是覆盖User.save(),但此时我不知道从哪里开始.大多数Django的验证代码似乎都是原子的,并且多行验证不是我以前在Django中完成的.
我有一大堆使用标准 Sphinx.rst文件编写的 Python 包文档。我还对我的包进行了测试,其中我想包括一个测试,以确定文档是否可以正确编译为预期的输出。基本上,当我使用无处链接或标题格式不佳等时,我想捕获案例。
现在我知道我总是可以编写一个调用make html和测试退出代码的测试,但这感觉真的很脏,所以我认为必须有更好的方法。有人知道这是什么吗?
我理解如何分解模型,我理解为什么循环模块依赖性会搞砸,但我遇到了一个问题,即将模型分解为单独的文件似乎会导致循环依赖.这是代码中的一个exerpt,我将跟踪失败过程中的回溯:
elearning/tasks.py
from celery.task import task
@task
def decompress(pk):
from elearning.models import Elearning
Elearning.objects.get(pk=pk).decompress()
Run Code Online (Sandbox Code Playgroud)
elearning/models.py
from competency.models import CompetencyProduct
from core.helpers import ugc_elearning
from elearning.fields import ArchiveFileField
class Elearning(CompetencyProduct):
archive = ArchiveFileField(upload_to=ugc_elearning)
def decompress(self):
import zipfile
src = self.archive.path
dst = src.replace(".zip","")
print "Decompressing %s to %s" % (src, dst)
zipfile.ZipFile(src).extractall(dst)
Run Code Online (Sandbox Code Playgroud)
ecom/models/products.py
from django.db import models
from django.utils.translation import ugettext_lazy as _
from core.models import Slugable, Unique
from django_factory.models import Factory
from core.helpers import ugc_photos
class Product(Slugable, Unique, Factory):
photo …Run Code Online (Sandbox Code Playgroud) 我已经在我自己的django环境中开发了一段时间,现在使用manage.py runserver没有任何问题,但现在我们有一个设计师和一个需要在该项目上工作的前端开发人员,我发现自己处于亏损状态.什么是他们的环境的最佳实践.
我可以要求他们设置自己的python环境,但这要求非常多,因为他们不是Python人,而且他们正在运行Windows(我的开发人员和生产环境都是Linux).
因此,我将它们设置在远程服务器上,即可在本地安装的磁盘.但是在这个设置中,我实际上是manage.py runserver ip:port在实例中使用不同的运行screen实例.它不能很好地处理常量重载(我们的设计人员常见),并且由于开发服务器的单线程特性而不时挂起.我想知道如何用Apache设置它.
这当然是问题所在staticfiles.每当上述任何一方想要添加或更改静态文件时,他们都必须运行manage.py collectstatic,这是不切实际的.我只是不知道其他任何方式.我发现使用Apache的所有文档都是针对生产环境的,所以......这就是我在这里的原因.