小编Pro*_*eus的帖子

Django何时使用@staticmethod或@property

我不断看到使用了以下装饰:@staticmethod,@property例如:

@staticmethod
def add_url():
    return reverse('add_user')

@property
def password_not_expired(self):
    return not self.password_expired
Run Code Online (Sandbox Code Playgroud)

有人可以解释何时使用其中一个?说我想添加此代码:

def get_user_type(self):
    return self.user_type
Run Code Online (Sandbox Code Playgroud)

我会用一种@staticmethod方法吗?

python django

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

CANT_REREAD:Celery中的格式字符串.%h

在我的主管文件中,我已经添加.%h到我的工作人员姓名(芹菜)的末尾,以使它们独一无二.例如:

[program:celery_worker]
directory = /srv/project/
command=celery -A tasks worker -l info -n default.%h
Run Code Online (Sandbox Code Playgroud)

但是,由于添加了此更改主管将不再更新或开始提供错误:

,"CANT_REREAD:格式字符串'celery -A任务worker -l info -n default.%h'for'command'格式错误""> file:/usr/lib/python2.7/dist-packages/supervisor/supervisorctl .py行:947

我该如何解决这个问题?

python django celery supervisord

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

'builtin_function_or_method' 对象不可迭代

我正在尝试从这个 json 中打印所有汽车:

{
    "stuff": [
        {
           "car" : 1,
            "color" : "blue"
        },
        {
            "bcarus" : 2,
            "color" : "red"
        }
     ], 
}
Run Code Online (Sandbox Code Playgroud)

In my Serializer I access the data like this....

stuff = self.context.get("request").data.stuff

But when I do the following...

        for item in stuff:
            print(item)
Run Code Online (Sandbox Code Playgroud)

I get he error:

'builtin_function_or_method' object is not iterable

Why do I get this error? How can I access stuff in a for loop?

When I do print(self.context.get("request").data.stuff) I get <built-in method …

python

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

Python 将 UUID 对象更改为字符串表示列表

当检索带有values_listPK 的查询集时,UUIDFieldDjango 会为您提供 UUIDField 对象列表而不是字符串 UUID 列表。

例如,以下给了我一个查询集:

items = Item.objects.values_list('id', flat=True).filter()
Run Code Online (Sandbox Code Playgroud)

其中的输出print(items)是:

[UUID('00c8aa9e-2f61-4bac-320c-ab26b8fb1de9')]
Run Code Online (Sandbox Code Playgroud)

但我希望该列表是 UUID 的字符串表示,即

 ['00c8aa9e-2f61-4bac-320c-ab26b8fb1de9']
Run Code Online (Sandbox Code Playgroud)

我可以对循环中的每个对象执行此操作,但我想更改整个查询集。这可能吗?

我试过了:

print(str(items))
Run Code Online (Sandbox Code Playgroud)

python

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

使用 Makefile 获取最新的 git 标签

我有一个 Makefile,用于构建我的 docker 映像。

NAME = demo/docker-test

default: build

build:
    docker build -t $(NAME) .

push:
    docker push $(NAME)
Run Code Online (Sandbox Code Playgroud)

我想build从我的 Git 标签附加到最新版本,即

build:
    docker build -t $(NAME):$(VERSION) .
Run Code Online (Sandbox Code Playgroud)

因此,如果我在 Git 中有 3 个标签v.1.2v.1.3v.1.4VERSION 将为v.1.4.

这可以在 Makefile 中实现吗?如果是这样,我该从哪里开始?

git makefile docker

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

Django应用程序尚未加载Celery任务

下面给出错误的是什么?我不确定这是我安装的应用程序或我的应用程序的问题.以下例外仅在运行Celery时生成,即celery -A demo.apps.wall.tasks workerrunserver不会生成任何错误.哪个应用程序问题?

Traceback (most recent call last):
  File "/Users/user/Documents/workspace/demo-api/env/bin/celery", line 11, in <module>
    sys.exit(main())
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/__main__.py", line 30, in main
    main()
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/celery.py", line 81, in main
    cmd.execute_from_commandline(argv)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/celery.py", line 770, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/base.py", line 309, in execute_from_commandline
    argv = self.setup_app_from_commandline(argv)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/base.py", line 469, in setup_app_from_commandline
    self.app = self.find_app(app)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/bin/base.py", line 489, in find_app
    return find_app(app, symbol_by_name=self.symbol_by_name)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/app/utils.py", line 238, in find_app
    sym = imp(app)
  File "/Users/user/Documents/workspace/demo-api/env/lib/python3.5/site-packages/celery/utils/imports.py", line 101, …
Run Code Online (Sandbox Code Playgroud)

python django celery

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

如何使用自引用递归字段在 DRF 串行器中进行过滤

使用 Python 3.x 和 Django Rest 框架。我有一个带有Recursive Field (自身)的序列化器,它按预期工作。但是,我需要一种方法来最初过滤它返回的嵌套子项active = True

我尝试了不同的方法来通过active=True过滤子项,但我无法在序列化器中返回的嵌套子项上使用此方法。

这是我所拥有的。

class MenuListSerializer(serializers.ModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name='menu_detail')
    children = RecursiveField(many=True, required=False)


class RecursiveField(serializers.Serializer):
    """
    Self-referential field for MPTT.
    """
    def to_representation(self, value):
        serializer = self.parent.parent.__class__(value, context=self.context)
        return serializer.data
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的方法,但出现错误ListSerializer' object has no attribute 'queryset'但是,我什至不确定这是否有效。

class MenuListSerializer(serializers.ModelSerializer):

    def __init__(self, *args, request_user=None, **kwargs):
        # try and filter active in chrildrend before query set is passed
        super(MenuListSerializer, self).__init__(*args, **kwargs)
        # print(self.fields['children'].parent)
        self.fields['children'].queryset =     self.fields['children'].queryset.filter(active=True) …
Run Code Online (Sandbox Code Playgroud)

python django python-3.x django-rest-framework

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

Django项目文件结构

我是Django的新手,需要了解文件结构.下面是我的Django项目的一个例子(缺少一些文件)

令我困惑的是,在真实服务器上进行生产以及我的文件结构如何相关.

我对这个问题有以下问题,我认为如果回答这些问题会帮助我理解.

  1. Web根目录在哪里?
  2. 你如何阻止用户下载settings.py?
  3. 它的结构好吗?

    project
      manage.py 
      templates [folder]
      myapp1 [folder]
       models.py
       views.py
      projectname [folder]
       urls.py
       settings.py
    
    Run Code Online (Sandbox Code Playgroud)

python django

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

Django:IntegrityError列'user_id'不能为空

在注册时保存我的用户后,我收到以下错误消息.有人能解释为什么吗?

谢谢

错误信息

IntegrityError at /member/registration/
(1048, "Column 'user_id' cannot be null")
Exception Type: IntegrityError at /member/registration/
Exception Value: (1048, "Column 'user_id' cannot be null")
Run Code Online (Sandbox Code Playgroud)

view.py

 if form.is_valid():
            # If form has passed all validation checks then continue to save member.
            user = User.objects.create_user(
                                            username=form.cleaned_data['username'],
                                            email=form.cleaned_data['email'], 
                                            password=form.cleaned_data['password']
                                            )
            user.save()
            #member = User.get_profile()
            #member.name = form.cleaned_data['name']
            #member.save()
            member = Member(
                            name=form.cleaned_data['name']
                            )
            member.save()
Run Code Online (Sandbox Code Playgroud)

models.py

class Member (models.Model):
    user =  models.OneToOneField(User)
    name = models.CharField(max_length=100)

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

django django-models

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

Django 表单:未显示验证消息

任何人都可以在以下示例中发现我做错了什么。当输入不正确的详细信息(例如无效的电子邮件地址)时,验证消息不会出现在我的模板中。模板正在加载并且没有错误。

我正在排除要在页面上打印的验证消息,但是由于某种原因,这突然停止工作。正如您从下面的代码示例中看到的,我将上下文中的表单传递回模板。这曾经有效,今天刚刚停止。

查看.py

if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            # If form has passed all validation checks then continue to save member.
            user = User.objects.create_user(
                                            username=form.cleaned_data['username'],
                                            email=form.cleaned_data['email'], 
                                            password=form.cleaned_data['password']
                                            )
            user.save()
            #member = User.get_profile()
            #member.name = form.cleaned_data['name']
            #member.save()
            member = Member(
                            user=user,
                            name=form.cleaned_data['name']
                            )
            member.save()

            # Save is done redirect member to logged in page.
            return HttpResponseRedirect('/profile')
        else:
            # If form is NOT valid then show the registration page again.
            form = RegistrationForm() 
            context = {'form':form}
            return render_to_response('pageRegistration.html', …
Run Code Online (Sandbox Code Playgroud)

django django-forms

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