小编Iva*_*kin的帖子

int()对象如何在python2中使用"=="运算符而不使用__eq __()方法?

最近我读了"Fluent python"并理解了==operator 如何使用python对象,使用__eq__()方法.但它如何与intpython2中的实例一起使用?

>>> a = 1
>>> b = 1
>>> a == b
True
>>> a.__eq__(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute '__eq__'
Run Code Online (Sandbox Code Playgroud)

在python3中都a.__eq__(b)返回True

python python-2.7 python-internals

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

django算上外键模型

嗨,我想显示我的问题模型的答案数

我的模特:

class Question(models.Model):

    text = models.TextField()
    title = models.CharField(max_length=200)
    date = models.DateTimeField(default=datetime.datetime.now)
    author = models.ForeignKey(CustomUser)
    tags = models.ManyToManyField(Tags)

    def __str__(self):
        return self.title


class Answer(models.Model):

    text = models.TextField()
    date = models.DateTimeField(default=datetime.datetime.now)
    likes = models.IntegerField(default=0)
    author = models.ForeignKey(CustomUser)
    question = models.ForeignKey(Question)
Run Code Online (Sandbox Code Playgroud)

我的看法:

def all_questions(request):

    questions = Question.objects.all()
    answers = Answer.objects.filter(question_id=questions).count()

    return render(request, 'all_questions.html', {
            'questions':questions, 'answers':answers })
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,查看所有答案的显示计数.对于每个问题模型,我如何过滤此计数?

python django django-models django-views

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

如何在不使用嵌套序列化器创建模型的情况下通过Serializer创建模型实例?

我的模型有很多链接:

class Travel(BaseAbstractModel):

    tags = models.ManyToManyField(
        Tag,
        related_name='travels',
        )
    owner = models.ForeignKey(
        'users.TravelUser',
        related_name='travel_owner'
        )
    payment = models.ForeignKey(
        Payment,
        related_name='travels',
        )
    country = models.ForeignKey(
        Country,
        related_name='travels,
        )
    ........
Run Code Online (Sandbox Code Playgroud)

其中许多模型只有两个具有唯一名称和图像的字段.我为每个模型创建了序列化器并将它们放入TravelSerializer

class TravelBaseSerializer(DynamicFieldsModelSerializer):

    owner = UserSerializer(required=False)
    tags = TagSerializer(many=True)
    payment = PaymentSerializer()
    country = CountrySerializer()  
Run Code Online (Sandbox Code Playgroud)

根据我覆盖的文档create()update.
问题是,当我发送JSON数据时,Django从嵌套的序列化器创建每个模型.但我想只创建Travel实例.此外,我希望不仅接收和响应序列化对象pk字段.

更新
我解决了这个问题,把代码放在答案中.现在我可以接收并响应Serializer数据而无需创建对象.但我认为DRF提供了更优雅的方法.这是我与DRF的第一个项目,也许我想念一些东西,这是一个更简单的解决方案.

django django-rest-framework

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

在 django 模板中格式化日期

{{ test.date}}我的模板以以下格式呈现标签-

2015-12-15T23:55:33.422679

当我尝试使用 django 的内置模板标记对其进行格式化时date,它不显示任何内容。

我尝试过的变体:

{{ test.date|date:"SHORT_DATE_FORMAT" }}

{{ test.date|date:"D d M Y" }}

模型.py:

class Human(models.Model):
    name = models.CharField(max_length=50,default='',blank=False)


class Test(models.Model):
    human = models.ForeignKey(Human)
    date = models.DateTimeField(default=datetime.now)
Run Code Online (Sandbox Code Playgroud)

视图.py:

def list(request):
    h = Human.objects.all()
    s=[]
    for her in h: 
        t = h.test_set.all()
        s.extend(t)
    context = RequestContext(request, {'test_list': s,})
    return render_to_response('template.html', context)
Run Code Online (Sandbox Code Playgroud)

然后我在模板中使用它,如下所示:

{% for test in test_list %}
     {{test.date}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

django django-templates django-template-filters

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

Django form.MultipleChoiceField.自定义模板中的复选框

我有这样的形式:

class PasswordForm(forms.Form):

    CHOICES=[('uppercase','Uppercase'),
            ('lowercase','Lowercase'),
            ('numbers','Numbers'),]

    password_length = forms.ChoiceField(choices=[(x, x) for x in range(1, 32)],)
    options = forms.MultipleChoiceField(
                     widget=forms.CheckboxSelectMultiple, choices=CHOICES,)
Run Code Online (Sandbox Code Playgroud)

如何在模板中自定义复选框字段?
我知道我怎么能用其他领域来做,比如forms.Charfield()我的password_length,只是

<form action="" method="post">
    {{form.some_field}}
</form>
Run Code Online (Sandbox Code Playgroud)

但它确实适用于我MultipleChoiceField,我尝试了很多东西
{{form.uppercase}},{{form.options.choices.uppercase}}并尝试{% for %}循环.
它只是没有返回,我没有通过浏览器检查器在html中看到它.

forms django

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

Django REST,上传的图片具有空值

我在前端有Django REST和Angular的简单应用程序,我的图像上传有问题.
我的模特:

class Photo(models.Model):

    img = models.ImageField(upload_to='photos/', max_length=254)
    text = models.CharField(max_length=254, blank=True)
Run Code Online (Sandbox Code Playgroud)

当我通过表单发送图像时,文本上传得很好,但图像具有空值.
从浏览器响应:

{ "IMG":空, "文": "测试"}

这是self.data.request我上传图片时打印的:

QueryDict:{'text':['test'],'InMemoryUploadedFile:filename.jpg(image/jpeg)]}

Serializer很简单ModelSerializer,只有两个模型字段.
视图:

class PhotoViewSet(viewsets.ModelViewSet):

    queryset = Photo.objects.all()
    serializer_class = PhotoSerializer
    parser_classes = (MultiPartParser, FormParser)

    def perform_create(self, serializer):
        serializer.save(img=self.request.data.get('file'))

photo_router = DefaultRouter()
photo_router.register(r'photo', PhotoViewSet)
Run Code Online (Sandbox Code Playgroud)

对于图像上传我使用lib ng-file-upload,我尝试了另一种上传方式,图像也是null.
角度代码:

var app = angular.module('myApp', ['ngRoute', 'ngFileUpload']);

app.config(function ($routeProvider) {

    $routeProvider
         .when('/', {
            templateUrl: 'http://127.0.0.1:8000/static/js/angular/templates/home.html'
    })
});
app.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.xsrfCookieName = 'csrftoken';
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
}]);
app.controller('MyCtrl', ['$scope', …
Run Code Online (Sandbox Code Playgroud)

javascript django file-upload angularjs django-rest-framework

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

如何在 aiohttp 框架中使用 aiopg 正确设置后台 postgres 通知侦听器?

我使用 aiohttp 处理 websockets 和 postgresql 监听/通知,使用 aiopg 驱动程序作为服务器之间的传输队列。
我的服务器设置的一部分:

def init(loop):
    ...
    app = Application(loop=loop)
    app.on_startup.append(connect_db)
    app.on_startup.append(start_background_tasks)
    app.on_cleanup.append(cleanup_background_tasks)
    return app


def create_app(loop):
    loop = asyncio.get_event_loop()
    app = init(loop)
    return app
Run Code Online (Sandbox Code Playgroud)

这是我的信号:

dsn = 'dbname=test user=root password=test host=127.0.0.1'

async def connect_db(app):
    app['db'] = await aiopg.connect(dsn)
    return app

async def listen_events_from_db(app):
    cursos = await app['db'].cursor()
    await cursos.execute("LISTEN test")
    try:
        while True:
            msg = await app['db'].notifies.get()
            # Here will be a coroutine which will send msg to connected websockets
            print('msg: ', msg.payload) …
Run Code Online (Sandbox Code Playgroud)

python postgresql python-asyncio aiohttp

6
推荐指数
0
解决办法
622
查看次数

生产服务器上的smpt django

我部署了我的django项目和我的联系表格stoped work.我在堆栈上尝试了一些提示,但它不起作用,请帮助我PLZ.

这是我的本地设置:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'mymail@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
Run Code Online (Sandbox Code Playgroud)

和我的观点:

def contact_form(request):

    form = ContactForm(request.POST or None)    
    if form.is_valid():
        message = form.cleaned_data.get('message')
        email = form.cleaned_data.get('email') 
        subject = 'contact form'
        from_email = email
        to_email = (settings.EMAIL_HOST_USER,)
        contact_message = '%s, from %s' %(message, from_email)

        send_mail(subject, contact_message, from_email, to_email, fail_silently=False)
        form = ContactForm()
        request.session.set_expiry(10)
        request.session['pause'] = True

    return render(request, 'contact_form.html', {'form':form})
Run Code Online (Sandbox Code Playgroud)

现在,当我发送消息时,我有"内部服务器错误".

django

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

Singledispatch基于值而不是类型

我在Django上构建SPA,我有一个庞大的函数,有许多if语句用于检查我的对象字段的状态名称.像这样:

if self.state == 'new':
    do some logic
if self.state == 'archive':
    do some logic
Run Code Online (Sandbox Code Playgroud)

等等.我读好书"流利蟒蛇"现在,我再提一下@singledispatch装饰,它看起来那么大,但它可以在此改变功能只能diferent类型像参数应用的str,int等等
的问题是,如果在Python或Django的方式分离逻辑喜欢在我的庞大功能中使用覆盖功能singledispatch吗?

python django

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

新创建文件的PyCharm设置模式

每次.py在Django项目中创建文件时,都需要添加两个字符串

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在PyCharm中为新创建的python文件设置一些模式?

python jetbrains-ide pycharm

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