小编Joe*_*e J的帖子

python django的新闻来源

我发现自己不断筛选网络以跟上Python/Django/web开发趋势和新闻.有没有人推荐任何专注于Web开发或Python社区的好消息网站?例如,什么新的Django模块是流行的或有趣的新jQuery插件等.只是好奇知道其他人如何保持他们的知识是最新的.

python django feed

6
推荐指数
1
解决办法
953
查看次数

Python Unicode CSV导出(使用Django)

我正在使用Django应用程序将字符串导出到CSV文件.该字符串是通过前端表单提交的消息.但是,当输入中提供了unicode单引号时,我一直收到此错误.

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' 
  in position 200: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用下面的代码将unicode转换为ascii,但仍然会出现类似的错误.

UnicodeEncodeError: 'ascii' codec can't encode characters in 
position 0-9: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我已经筛选了几十个网站并学到了很多关于unicode的知识,但是,我仍然无法将这个unicode转换为ascii.我不在乎算法是否删除了unicode字符.注释的行表示我尝试过的各种选项,但错误仍然存​​在.

import csv
import unicodedata

...

#message = unicode( unicodedata.normalize(
#                            'NFKD',contact.message).encode('ascii','ignore'))
#dmessage = (contact.message).encode('utf-8','ignore')
#dmessage = contact.message.decode("utf-8")
#dmessage = "%s" % dmessage
dmessage = contact.message

csv_writer.writerow([
        dmessage,
])
Run Code Online (Sandbox Code Playgroud)

有没有人有任何关于删除unicode字符的建议我可以将它们导出为CSV?这个看似简单的问题让我头晕目眩.任何帮助深表感谢.谢谢,乔

python csv unicode ascii utf-8

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

Django:表单验证:一个字段接受多个值

我正在创建一个表单字段,它为给定字段获取多个值,验证它们并将它们存储为列表。

例如,可以运行以下curl命令并发布几个名为“email”的POST参数

curl -X POST -d email=test@example.com -d email=test2@example.com http://url/here/
Run Code Online (Sandbox Code Playgroud)

在我看来,我可以执行以下命令来直接从 POST 数据获取电子邮件列表。

email = request.POST.getlist('email')
Run Code Online (Sandbox Code Playgroud)

但是,我想利用表单验证来清理 POST 数据中指定的所有电子邮件。

理想情况下,我想运行 form.is_valid() ,然后访问表单上的 clean_data['email'] 键将返回有效电子邮件地址的列表。

我研究过使用 MultipleChoice 字段和类似字段(因为它们接受具有相同名称的多个输入),但这些字段要求您事先定义选择。我也考虑过使用表单集,但对于我在这种情况下尝试做的事情来说,这些似乎过于复杂。

有谁知道有这样的行为的领域吗?谢谢阅读。

forms django validation field

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

Django在ForeignKey上正确使用select_related或prefetch_related

我试图弄清楚如何使用select_relatedprefetch_related优化外键另一端的查询.例如:

说我有一些模型如下:

class Product(models.Model):
    name = models.CharField(max_length=50)

class ProductImage(models.Model):
    image = models.ImageField(upload_to="images")
    product = models.ForeignKey("myapp.Product", related_name="product_images")
Run Code Online (Sandbox Code Playgroud)

如果我想打印所有产品ProductImage,我必须遍历所有产品,然后,对于每个产品,迭代所有产品图像.但是,这会产生O(n*m)个数据库查询.

for product in Product.objects.all():
    print product.product_images.all()
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法利用select_relatedprefetch_related减少这个查询到一个或两个查询.

正如Django所记录的,select_related当我选择时,我可以开始工作ProductImage.如您所见,添加select_related创建JOIN到产品表.

>>> ProductImage.objects.all().query.sql_with_params()
(u'SELECT "myapp_productimage"."id",  ...  FROM "myapp_productimage" .... 

>>> ProductImage.objects.select_related('product').query.sql_with_params()
(u'SELECT "myapp_productimage"."id", ...   FROM "myapp_productimage" LEFT OUTER JOIN ....
Run Code Online (Sandbox Code Playgroud)

但是,我该如何完成相反的操作呢?例如,如何查询所有Products并将其加入ProductImages?做类似以下的事情似乎不起作用.

Product.objects.select_related('product_images').query.sql_with_params()
Run Code Online (Sandbox Code Playgroud)

Django有可能是这样的吗?

谢谢你的考虑.

django optimization

5
推荐指数
3
解决办法
4775
查看次数

Celery Logging:记录任务内部和外部的一致方式

我正在运行一个执行函数的Celery任务.此函数生成一些日志记录信息.使用get_task_logger记录器,我可以将记录信息打印到Celery stdout.

from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)

def my_func_called_inside_a_task():
    logger.debug("SOME OUTPUT HERE")
Run Code Online (Sandbox Code Playgroud)

但是,我还想将此函数导入为普通的python脚本(不使用Celery)并登录到例如stdout.通常,我可能会做以下事情:

import logging
logger = logging.getLogger(__name__)

def my_func_called_inside_a_task():
    logger.debug("SOME OUTPUT HERE")
Run Code Online (Sandbox Code Playgroud)

如何将这两种方法结合起来,以便我不必像以下那样做多余的事情?

import logging
from celery.utils.log import get_task_logger
logger = logging.getLogger(__name__)
logger_celery = get_task_logger(__name__)

def my_func_called_inside_a_task():
    logger.debug("SOME OUTPUT HERE")
    logger_celery.debug("SOME OUTPUT HERE")
Run Code Online (Sandbox Code Playgroud)

简介:如果我从celery任务调用该函数,我希望它能够登录到芹菜工作者stdout.如果我从普通的Python提示符调用该函数,它将使用普通的Python记录器.任何帮助深表感谢.

python django logging task celery

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

Python Setup.py:在运行 install_requires 之前设置环境变量

最近,对 Apache Airflow 的更改需要设置环境变量 SLUGIFY_USES_TEXT_UNIDECODE=yes 才能安装:https ://airflow.apache.org/installation.html

在我的自定义模块的 setup.py 脚本中,我将 Airflow 包含在install_requires列表中。因此,当我尝试安装自定义模块时,它也无法查找要设置的环境变量。

由于我有很多环境要安装它,我想在我的 setup.py 模块中自动设置该环境变量,以便它始终存在。但是,如果我只是将此行放在 setup.py 的顶部或 install 的自定义子类的 run() 方法内部(通过 cmdclass setup.py 选项),它似乎不起作用。

os.environ['SLUGIFY_USES_TEXT_UNIDECODE'] = 'yes'
Run Code Online (Sandbox Code Playgroud)

关于如何在install_requires安装任何依赖项之前在 setup.py 中设置环境变量的任何想法?

任何帮助深表感谢。

python pip environment-variables setup.py airflow

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

kubernetes Python API 客户端:执行完整的 yaml 文件

Kubernetes 有一个非常好的官方 Python API 客户端。API 客户端假定您将创建单独的资源(例如 pod 或服务),并假定您将使用 Python 对象来组合和创建 API 请求。

但是,我想通过 Python 接口运行任意 kubernetes YAML 文件(包含一个或多个 k8s 资源)。我想知道是否可以利用 Python kubernetes 客户端来应用任意 YAML 文件?

我基本上是在寻找 Python 等价物:

kubectl apply -f some-file-containing-multiple-resources.yaml
Run Code Online (Sandbox Code Playgroud)

我正在寻找可以基本上加载 kubeconfig 并以相当 Pythonic 的方式通过 Python 应用 yaml 的东西。

我知道我可能可以用 Python 子进程调用来包装 kubectl 命令,但我希望有比这更 Pythonic 的东西,并希望核心 K8s Python 客户端可以做类似的事情。或者,如果有另一个 Python 包做类似的事情。

Python kubernetes 客户端可以调用任意的 k8s yaml 文件,如果不能,有什么可以吗?

感谢阅读 - 我感谢您提供的任何建议。

python api client yaml kubernetes

5
推荐指数
2
解决办法
7496
查看次数

VSCode 下载旧版本的扩展

我正在寻找安装旧版本的 VSCode jupyter 扩展。(原因是我使用的是从Code Server构建的 VSCode ,该版本从 VSCode v1.57.1​​ 开始 - 今年夏天发布 - 我想为其安装扩展)。看起来Jupyter Extension 版本 2021.6.9999是支持 VSCode 版本 v1.57.1​​ 的 Jupyterhub 插件的最新版本。

但是,市场仅在登陆页面的“版本历史记录”部分下显示最后 5 个扩展版本。列出的这些版本都太新了。

我可以在 Github 上找到Jupyter 版本 2021.6.9999 的源代码,但 vsix 二进制文件不存在。我不知道如何编译它;看起来这将是一个非常复杂的过程。

是否有 vsix 插件文件的存档可以追溯到 5 个版本之前?这些版本已于今年早些时候推出,因此似乎应该有一种方法可以在某处访问较旧的 vsix 扩展。任何想法都非常感激。

jupyter visual-studio-code

5
推荐指数
2
解决办法
9100
查看次数

Python lxml E-Factory

我一直在使用lxml"E-Factory"(又名ElementMaker)来创建xml文档.我正在尝试生成类似于此的xml文档:

<url>
  <date-added>2011-11-11</date-added>
</url>
Run Code Online (Sandbox Code Playgroud)

但是,使用电子工厂,我不知道如何在'数据添加'元素中指定破折号.它似乎将破折号解释为减号.

这是我一直提到的文档:http: //lxml.de/tutorial.html#the-e-factory

以下是重现错误的方法:

from lxml import etree
from lxml.builder import ElementMaker 

E = ElementMaker()
URL = E.url
DATE_ADDED = E.date-added

xml = URL(DATE_ADDED(myobject.created.strftime('%Y-%m-%dT%H:%M:%S')),)


NameError global name 'added' is not defined
Run Code Online (Sandbox Code Playgroud)

有没有人知道一个技巧,让它用破折号正确渲染元素?

谢谢您阅读此篇.

python xml lxml elementtree

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

Django:复制FileFields

我正在尝试使用硬链接复制文件,其中文件存储为Django FileField.我想使用硬链接来节省空间和复制时间(预计不会对原始文​​件或副本进行任何更改).但是,当我尝试从下面的代码段调用new_file.save()时,我遇到了一些奇怪的错误.

AttributeError: 'file' object has no attribute '_committed'
Run Code Online (Sandbox Code Playgroud)

我的想法是,在制作硬链接后,我可以打开链接文件并将其存储到Django新的File实例的FileFile中.我错过了这里的一步还是什么?

models.py

class File(models.Model):
    stored_file = models.FileField()
Run Code Online (Sandbox Code Playgroud)

elsewhere.py

import os 

original_file = File.objects.get(id=1)
original_file_path = original_file.file.path

new_file = File()
new_file_path = '/path/to/new/file'

os.makedirs(os.path.realpath(os.path.dirname(new_file_path)))
os.link(original_file_path, new_file_path)
new_file.stored_file = file(new_file_path)
new_file.save()
Run Code Online (Sandbox Code Playgroud)

django copy file path hardlink

4
推荐指数
1
解决办法
5492
查看次数