小编Rob*_*ley的帖子

Django MPTT Postgres更新查询运行缓慢

我在模型中使用mpt来管理标记系统(每个标记都有一个可选的TreeForeignKey到'父'标记)

每当我需要保存标签模型时,以下查询运行异常缓慢(超过45秒)

 UPDATE "taxonomy_taxonomy" SET "tree_id" = ("taxonomy_taxonomy"."tree_id" + %s) WHERE "taxonomy_taxonomy"."tree_id" > %s 
Run Code Online (Sandbox Code Playgroud)

我通过自动标记系统发送文章内容,该系统可以生成超过20个标签.显然,那不会飞:)

我添加了db_index = False希望改变写入时间(读取似乎不是问题),但问题仍然存在.

这是有问题的模型:

class Taxonomy(MPTTModel):

parent = TreeForeignKey('self',blank=True,null=True,related_name='children',verbose_name='Parent', db_index=False)
parent_name = models.CharField(max_length=64, blank=True, null=True, editable=False)
name = models.CharField(verbose_name='Title', max_length=100, db_index=True)
slug = models.SlugField(verbose_name='Slug', blank=True)
primary = models.BooleanField(
    verbose_name='Is Primary',
    default=False,
    db_index=True,
)
type = models.CharField(max_length=30, db_index=True)
created_date = models.DateTimeField(auto_now_add=True, null=True)
updated_date = models.DateTimeField(auto_now=True, null=True)
publication_date = models.DateTimeField(null=True, blank=True)
scheduled_date = models.DateTimeField(null=True, blank=True)
workflowstate = models.CharField(max_length=30, default='draft')
created_by = models.ForeignKey(User, null=True)

paid_content = models.BooleanField(verbose_name='Is Behind …
Run Code Online (Sandbox Code Playgroud)

django postgresql django-models mptt django-mptt

8
推荐指数
1
解决办法
596
查看次数

PyJWT 返回无效的令牌签名

我正在使用 PyJWT==1.4.2 来生成我打算用于 Firebase 身份验证的令牌。

不幸的是,我无法使用任何第三方 Python Firebase 库,即使可以,在尝试使用 FirebaseTokenGenerator 时也遇到了同样的困难。

在我的 API 内部,我有一个为用户名生成令牌的函数。

118     def generate_token(self, username):
119         payload = {
120             'something': 'Here',
121         }   
122         secret = "TESTSECRET"
123         token = jwt.encode(
124             payload,
125             secret,
126             algorithm='HS256')
127         return token
Run Code Online (Sandbox Code Playgroud)

我从这个函数得到的令牌的一个例子是:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb21ldGhpbmciOiJIZXJlIn0.fpIMSRJ3AAL30LIDwHJM9ZOumdRzS7yooiiUgMPms2Y

不幸的是,这不是一个有效的令牌。https://jwt.io/等在线资源告诉我签名部分无效。

不确定这是否是进一步有用的信息,但是当我尝试解码令牌时,我得到以下信息:

b'{"alg":"HS256","typ":"JWT"}{"something"[83 chars]\x88'
Run Code Online (Sandbox Code Playgroud)

关于我可能做错了什么的任何想法?

python jwt firebase firebase-authentication pyjwt

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

将关联域添加到 Expo React-Native 应用程序

我正在尝试将关联域添加到我的 Expo(非弹出)react-native 项目中。

我的应用程序构建良好并通过 XCode 应用程序加载器正常提交。

但是,如果我将associatedDomains数组添加到我的数组中,则app.json在尝试提交应用程序时会出现错误:

ERROR ITMS-90163: "Invalid Code Signing Entitlements. The entitlements in your app bundle signature do not match the ones that are contained in the provisioning profile. The bundle contains a key that is not included in the provisioning profile: 'com.apple.developer.associated-domains' in 'Payload/ExpoKitApp.app/ExpoKitApp'."

我根本没有在 XCode 中开发这个。我一直在自己的环境中构建应用程序,运行expo build:ios,下载.ipa文件,在 Mac 上打开 XCode,然后运行 ​​将Xcode > Open Developer Tools > Application Loader其提交给 testflight。该过程一直运行良好,但我不确定我需要在 XCode 或我的 Apple 开发人员帐户中的哪个位置启用该权利,如果需要更新一些配置文件,如果需要,我将其放在何处。

世博会文档提到(https://docs.expo.io/versions/latest/workflow/linking/#universal-links-on-ios …

xcode react-native expo

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

Django 1.8迁移 - "NoneType"对象没有属性"_meta"

试图将项目从Django 1.7迁移到1.8.在与代码错误搏斗后,我能够运行迁移.但是,当我尝试迁移时,我收到错误"'NoneType'对象没有属性'_meta'"

在我的任何应用程序的追溯中都没有参考,所以我不确定在哪里寻找错误(以及包含在这里的代码,以便我对那些试图帮助我的人更有帮助)

这是追溯的全文

(venv)rtownley@ubuntu:~/Projects/sparrow1/NJ$ ./manage.py makemigrations
No changes detected
(venv)rtownley@ubuntu:~/Projects/sparrow1/NJ$ ./manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: staticfiles, editor, djcelery, messages, getty, kombu_transport_django, debug_toolbar, utils, locking, petro, tokenapi, grappelli, django_extensions, selectable
  Apply all migrations: adops, taxonomy, issues, editorial, contenttypes, authors, auth, comms, membership, sessions, bento, urlalias, accounts, breaking_news, easy_thumbnails, images, admin, pages, documents, events
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states...Traceback (most recent call last):
  File "./manage.py", line …
Run Code Online (Sandbox Code Playgroud)

python django

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

Docker Swarm Init 失败:地址已在使用中

我一直在浏览https://docs.docker.com/v17.12/get-started/part3/#take-down-the-app-and-the-swarm 上的 docker 教程,并且我已经完成了部分我们在哪里设置我们的初始 docker swarm。

起初我有这个工作,但后来不得不调和我的系统上asnap install docker和之间的差异apt install docker。在此之后,当我尝试运行时,docker swarm init我被告知:

Error response from daemon: manager stopped: failed to listen on remote API address: listen tcp 0.0.0.0:2377: bind: address already in use
Run Code Online (Sandbox Code Playgroud)

我没有其他 docker 镜像或服务在运行,所以我可以杀死或删除任何东西,但我似乎无法弄清楚如何清除这个端口以便我可以初始化一个新的群。

有没有办法 A)杀死正在运行的群体,或 B)列出可用的群体,以便我可以加入它,然后作为群体主从那里杀死它?

谢谢!

docker docker-compose

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

将字符串化的字典列表转换回字典列表

我知道要将字典转换为字符串/从字符串转换,我使用json.loadsjson.dumps。但是,当给定一个表示字典列表的字符串时,这些方法会失败。例如,

sample_entry = [
    {"type": "test", "topic": "obama", "interval": "daily"},
    {"type": "test", "topic": "biden", "interval": "immediate"},
]
Run Code Online (Sandbox Code Playgroud)

将其转换为字符串str()给我们

"[{'topic': 'obama', 'interval': 'daily', 'type': 'test'}, {'topic': 'biden', 'interval': 'immediate', 'type': 'test'}]"
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以将其转换回字典列表?eval正是我想要的,但我担心在用户提供的字符串上运行它。

是否有另一种方法可以在面对不同的列表长度和可变的空白时保持稳健?

编辑:虽然 json.loads(json.dumps(sample_entry)) 确实有效,但 json.loads(str(sample_entry)) 无效。区别似乎在于使用单引号和双引号的地方。我从中接收此字符串的数据源在使用 ' vs " 时不太可能保持一致,因此我想同时考虑两者。

python json python-3.x

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

如何在 Wagtail 中对发布执行操作?

我想在Page发布Wagtail对象时执行一个功能(具体来说,我有一个实用方法,可以发送电子邮件通知订阅者有新的博客页面可用)。

有没有我可以覆盖的方法(或者save其他方法)可以让我在发布时运行这个函数,或者甚至更好,在对象的第一次发布时运行?

django wagtail

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

Pandas:合并两个具有重复行的数据框

简短问题 在 Pandas 中,合并两个数据帧的最方便的方法是什么,以便左侧数据帧中的所有条目都接收来自右侧数据帧的第一个匹配值?

更长的问题 假设我有两个电子表格:people.csvorders.csv. people.csv包含有关此人的多列信息,而orders.csv包含此人的全名,以及该人所下订单数量的一行。

我需要创建第三个 csv,output.csv其中包含来自的所有列people.csv以及output.csv与两个电子表格中的一列匹配的列(一个称为“FULL_NAME”,另一个称为“CUSTOMER_FULL_NAME”)

people.csv在 FULL_NAME 字段上排序,但包含重复的行,因此在 FULL_NAME 列中有多个带有“John Smith”的行。也有重复的行,orders.csv但重复的数量不同(例如,people.csv可能有 4 个 John Smith 条目,但orders.csv可能只有两个)。

如果我使用以下代码:

people = pd.read_csv('people.csv')
orders = pd.read_csv('orders.csv')
full = pd.merge(
    people,
    orders,
    left_on='FULL_NAME',
    right_on='CUSTOMER_FULL_NAME',
)
result.to_csv("output.csv")
Run Code Online (Sandbox Code Playgroud)

...我得到一个 CSV,其中只有 FULL_NAME 字段中带有“John Smith”的两行包含 John Smith 的订单数。正下方的行在该字段中没有值。那是因为output.csv只包含两行与 John Smith 匹配的值,而people.csv有 4 行。

Pandas 中是否有一种方便的方法可以将一列的值设置为另一个数据框中的第一个匹配列,以便所有 4 个条目都包含来自 的第一个匹配值orders.csv? …

python csv pandas

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

Django模板上下文对象的目的?

在我们的一个应用程序(运行Django 1.8)中,我们倾向于通过将字典传递到render()函数的context参数并将它们作为视图的一部分返回来呈现模板.例如:

from django.views.generic import View

class HomePageView(View):

    def get(self, request, *args, **kwargs):
        context = {'foo': 'bar', 'foo2': 'bar2'}
        return render(request, "page.html", context)
Run Code Online (Sandbox Code Playgroud)

现在我已经开始寻找它,我看到人们使用Django"上下文"对象而不是字典的例子.

from django.views.generic import View
from django.template import Context

class HomePageView(View):

    def get(self, request, *args, **kwargs):
        context = Context()
        context['foo'] = 'bar'
        context['foo2'] = 'bar2'
        return render(request, "page.html", context)
Run Code Online (Sandbox Code Playgroud)

文档显示此Context对象可以以类似于字典(pop,copy,key assignment等)的方式进行交互,并且具有flatten()方法,可以将其与字典进行比较. https://docs.djangoproject.com/en/1.8/ref/templates/api/#playing-with-context.

我的问题是:我有没有理由想要使用Context对象而不是字典?我可以看到如果有人想要轻松访问请求变量,有人可能会发现RequestContext的子类很有用,但我想我错过了上下文对象的实用程序.

python django django-templates

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

Django/unittest 在测试运行程序末尾运行命令

我正在使用 Django 测试运行程序来运行我的单元测试。其中一些测试使用工厂在我的本地系统上创建大量文件。它们都有一个可检测的名称,并且可以相当容易地删除。

我试图避免

  1. 保持文件删除 cron 作业运行
  2. 如果检测到我们正在测试,请更改我的自定义图像模型的代码以删除该文件。相反,我希望在测试运行结束时运行一次(且仅一次)命令来清理测试生成的所有文件。

我编写了一个小型管理命令,用于删除符合预期约定的文件。有没有办法让测试运行程序call_command在完成整个测试套件后运行(而不仅仅是在特定测试的tearDown或方法中)?tearDownClass

python django unit-testing factory-boy python-unittest

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

Django Admin自定义表单不保存

我有一个自定义的 Django 管理员,我在其中指定了一个模板和一个要使用的自定义表单

class StoryAdmin(BaseAdmin):
    form = Edit_Story_Form
    change_form_template = "CMS/Editorial/AdminStory/AdminStory.html"

    def change_view(self, request, object_id, form_url='', extra_context=None):
        extra_context = extra_context or {}
        thing = Story.objects.get(pk=object_id)
        extra_context['workflowstate'] = thing.workflowstate.title()
        extra_context['last_updated'] = thing.updateddate
        return super(StoryAdmin, self).change_view(request, object_id, form_url, extra_context=extra_context)

admin.site.register(Story, StoryAdmin)
Run Code Online (Sandbox Code Playgroud)

表格如下:

class Edit_Story_Form(ModelForm):
headline = forms.CharField()
subheadline = forms.CharField()
add_block = forms.CharField(widget=forms.HiddenInput(), label='', required=False)

class Meta:
    model = Story
    fields = []

def __init__(self, *args, **kwargs):
    self.request = kwargs.pop('request', None)
    request = self.request
    super(Edit_Story_Form, self).__init__(*args, **kwargs)
    zones = Zone.objects.filter(story=self.instance)
    for zone …
Run Code Online (Sandbox Code Playgroud)

python forms django

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

Django Rest Framework返回dict而不是OrderedDicts

我有一个带有两个附加SerializerMethodField字段的序列化器:

class BentoSerializer(ModelSerializer):
    zones = SerializerMethodField()
    lead_zone = SerializerMethodField()

    def get_zones(self, obj):
        zone_queryset = obj.get_zones()
        return ZoneSerializer(zone_queryset, many=True).data

    def get_lead_zone(self, obj):
        zone_queryset = obj.get_lead_zone()
        return ZoneSerializer(zone_queryset).data

    class Meta:
        model = Bento
        fields = ('lead_zone', 'zones', )
Run Code Online (Sandbox Code Playgroud)

我需要将来自序列化器的数据嵌套为JSON(ZoneSerializer包含SerializerMethodField其自身的相似的s和正常模型字段),但它以OrderedDict的形式出现。

有没有一种方法可以配置序列化器,以使其BentoSerializer(obj).data返回嵌套的JSON,我应该将OrderedDicts递归地转换为dict,还是有一些我不知道的获取未排序数据的其他序列化器方法?

非常感谢!

PS:当前示例数据来自通过串行器发送的工厂对象:

[OrderedDict([('order', 1), ('columns', [OrderedDict([('order', 1), ('blocks', [OrderedDict([('order', 1), ('block_type', 'Text'), ('blockcontent', 'Cum inventore sed fugit aliquam doloribus. Alias exercitationem odit asperiores rerum qui aperiam cum fugit.'), ('heading', 'Adipisci possimus dolore assumenda sapiente velit amet …
Run Code Online (Sandbox Code Playgroud)

python django serialization django-rest-framework

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

为自定义用户模型添加一个字段到 Django 管理员

我有一个自定义用户模型:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    is_happy = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

我在 内引用它AUTH_USER_MODEL

我已经根据 UserAdmin 为其生成了一个管理员

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin

from .models import User


@admin.register(User)
class UserAdmin(DjangoUserAdmin):
    pass
Run Code Online (Sandbox Code Playgroud)

但该is_happy字段不会出现在用户管理页面中。

我如何/在哪里告诉该用户管理员我希望它显示的其他字段?

更多细节

  • Django v3.1.3
  • Python v3.8.5

django

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