小编ale*_*lex的帖子

在python中使用Pillow将png转换为jpeg

我正在尝试使用枕头将png转换为jpeg.我试过几次没有成功.这两个似乎适用于像这样的小png图像.

在此输入图像描述

第一个代码:

from PIL import Image
import os, sys

im = Image.open("Ba_b_do8mag_c6_big.png")
bg = Image.new("RGB", im.size, (255,255,255))
bg.paste(im,im)
bg.save("colors.jpg")
Run Code Online (Sandbox Code Playgroud)

第二个代码:

image = Image.open('Ba_b_do8mag_c6_big.png')
bg = Image.new('RGBA',image.size,(255,255,255))
bg.paste(image,(0,0),image)
bg.save("test.jpg", quality=95)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试转换像这样的更大的图像

我越来越

Traceback(最近一次调用最后一次):

  文件"png_converter.py",第14行,in 

    bg.paste(image,(0,0),image)文件"/usr/lib/python2.7/dist-packages/PIL/Image.py",第1328行,粘贴

    self.im.paste(im,box,mask.im)ValueError:错误的透明度掩码

我究竟做错了什么?

python image python-imaging-library python-3.x

38
推荐指数
3
解决办法
6万
查看次数

Django:根据字段的状态注释 Sum Case When

在我的应用程序中,我需要获取过去 30 天内每天的所有交易。

在交易模型中,我有一个货币字段,如果选择的货币是英镑或美元,我想将值转换为欧元。

模型.py

class Transaction(TimeMixIn):
    COMPLETED = 1
    REJECTED = 2
    TRANSACTION_STATUS = (
        (COMPLETED, _('Completed')),
        (REJECTED, _('Rejected')),
    )

    user = models.ForeignKey(CustomUser)
    status = models.SmallIntegerField(choices=TRANSACTION_STATUS, default=COMPLETED)
    amount = models.DecimalField(default=0, decimal_places=2, max_digits=7)
    currency = models.CharField(max_length=3, choices=Core.CURRENCIES, default=Core.CURRENCY_EUR)
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我一直在使用的:

Transaction.objects.filter(created__gte=last_month, status=Transaction.COMPLETED)
                        .extra({"date": "date_trunc('day', created)"})
                        .values("date").annotate(amount=Sum("amount"))
Run Code Online (Sandbox Code Playgroud)

它返回一个包含日期和数量字典的查询集:

<QuerySet [{'date': datetime.datetime(2018, 6, 19, 0, 0, tzinfo=<UTC>), 'amount': Decimal('75.00')}]>
Run Code Online (Sandbox Code Playgroud)

这就是我现在尝试的:

queryset = Transaction.objects.filter(created__gte=last_month, status=Transaction.COMPLETED).extra({"date": "date_trunc('day', created)"}).values('date').annotate(
    amount=Sum(Case(When(currency=Core.CURRENCY_EUR, then='amount'), 
                    When(currency=Core.CURRENCY_USD, then=F('amount') * 0.8662), 
                    When(currency=Core.CURRENCY_GBP, then=F('amount') * 1.1413), default=0, output_field=FloatField()))
)
Run Code Online (Sandbox Code Playgroud)

它将 gbp 或 usd …

python django datetime django-queryset

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

Python在列表中获取不在列表中的项目

我有一个国家/地区列表:countries = ['United States', 'Canada', 'France', 'Japan', 'Turkey', 'Germany', 'Ghana', 'Hong Kong', 'United Kingdom']

我希望获得所有不包含任何国家/地区的行.这是我的代码:

with open('file.txt') as f:
    lines = f.readlines()[1:5]
    a = [line.split(':') for line in lines]
    for country in countries:
        for line in a:
            if country not in line:
                print(line)
Run Code Online (Sandbox Code Playgroud)

print(line)打印所有行而不是打印那些不包含国家/地区的行

python

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

Django如何在使用runserver时打印数据

我有一个字典数据,其中包含每个用户创建的玩家数量:

视图.py

def statistics(request):
    users = User.objects.all()
    data = dict()
    for user in users:
        players = Players.objects.filter(created__email=user.email).count()
        if players > 0:
            data[user.email] = players
            logger.info(data)
Run Code Online (Sandbox Code Playgroud)

使用 runserver 时如何在控制台中打印此字典?我见过 django 记录器,但我没有完全理解它们。

django

3
推荐指数
1
解决办法
2万
查看次数

未找到 Django Rest 框架路由器

在我的应用程序中,我正在使用ModelViewSet,至于我使用的网址SimpleRouter()

主.url

urlpatterns = [
    url(r'^teams/', include('team.urls', namespace='teams')),
]
Run Code Online (Sandbox Code Playgroud)

团队网址

router = SimpleRouter()
router.register('', views.TeamViewSet, base_name='teams')
router.register('players', views.PlayersViewSet, base_name='players')

urlpatterns = [
    url(r'^', include(router.urls))
]
Run Code Online (Sandbox Code Playgroud)

我希望我的网址如下所示:http://.../teams/http://.../teams/players/。我的问题是,当我留空时,router.register('', views.TeamViewSet, base_name='teams')它会向玩家网址发送未找到的 404 错误,但如果我向第一个网址添加任何内容,例如:router.register('anything', views.TeamViewSet, base_name='teams'),它将起作用。

我怎样才能按照我想要的方式设置网址,为什么它不能以这种方式工作?

django django-rest-framework django-rest-viewsets

3
推荐指数
1
解决办法
2414
查看次数

Django在django中添加占位符,内置登录表单

我正在使用django内置登录表单,我想将占位符添加到用户名和密码.

我的模板:

<div class="form-group">
    <div class="col-md-12">
        {{ form.username|add_class:'form-control' }}
    </div>
</div>
<div class="form-group">
    <div class="col-md-12">
        {{ form.password|add_class:'form-control' }}
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python django django-forms

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

Django Reportlab 生成空 pdf

我正在使用reportlab 创建pdf。我正在使用 Reportlab 段落。问题是每次我下载它时,它都会生成一个空的txt。我在没有 django 的情况下测试了它,它工作没有问题。如果我使用画布,它可以工作,但不适合我的需要。

视图.py

from django.http import HttpResponse
from django.shortcuts import render
from reportlab.lib.enums import TA_JUSTIFY
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.pagesizes import letter


def genereaza_pdf(request):
    if request.method == 'POST':
        response = HttpResponse(content_type='application/pdf')
        response['Content-Disposition'] = 'attachment; filename="example.pdf"'
        doc = SimpleDocTemplate("example.pdf", pagesize=letter, rightMargin=70, leftMargin=70, topMargin=70,
                                bottomMargin=60)
        report = []

        styles = getSampleStyleSheet()
        styles.add(ParagraphStyle(name="Times", fontName='Times-Roman', fontSize=15, alignment=TA_JUSTIFY))

        p_text = "<u>ANEXA 1</u>"
        report.append(Paragraph(p_text, styles["Times"]))
        report.append(Spacer(1, 5))
        doc.build(report)
        return response
    return render(request, 'pdf_test.html')
Run Code Online (Sandbox Code Playgroud)

pdf_test.html …

python pdf django reportlab

2
推荐指数
1
解决办法
1633
查看次数

Django ManyToMany 字段从没有“for”的对象中获取所有值

是否可以在不使用“for”的情况下从对象中获取 ManyToMany 的值?

模型.py

class Citizenship(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
        verbose_name_plural = "Citizenship"

    def __str__(self):
        return self.name

class Anexa(models.Model):
    name = models.CharField(max_length=150, help_text="3")
    citizenship = models.ManyToManyField(Citizenship, help_text="4")
Run Code Online (Sandbox Code Playgroud)

我有一个名为 Alex 的 Anexa 对象,我有这个对象的 4 个公民身份。我正在寻找与此等效的东西:

for citizenships in x.citizenship.all():
    print(citizenships.name)
Run Code Online (Sandbox Code Playgroud)

python django manytomanyfield

2
推荐指数
1
解决办法
4511
查看次数

python geopy获取城市和国家

我正在尝试使用 geopy 获取城市和国家/地区名称。

通常这是您使用 geopy 获取城市和国家的方式。

from geopy.geocoders import Nominatim

geolocator = Nominatim(timeout=3)
geolocator.reverse('52.5094982,13.3765983')
loc = location.raw
loc_dict = location.raw
print(loc_dict['address'])
and this is the output:

{'suburb': 'Tiergarten', 'country_code': 'de', 'country': 'Deutschland', 'postcode': '10117', 'attraction': 'Potsdamer Platz', 'road': 'Potsdamer Platz', 'city': 'Berlin', 'city_district': 'Mitte', 'state': 'Berlin'}
Run Code Online (Sandbox Code Playgroud)

我的问题是 geopy 以其国家语言返回城市和国家名称,例如:

city: Berlin, country: Deutschland
city: København, country: Danmark
city: Bucure?ti, country: România
Run Code Online (Sandbox Code Playgroud)

我希望他们像这样:

city: Berlin, country: Germany
city: Copenhagen, country: Denmark
city: Bucharest, country: Romania
Run Code Online (Sandbox Code Playgroud)

是否有可能按照我的意愿用英语获得它们?或以某种方式转换它们?我正在使用世界各地的所有国家和城市。

python geopy

2
推荐指数
1
解决办法
5823
查看次数