小编Mo *_*abi的帖子

保持我的signals.py文件在Django项目中的正确位置

基于我正在阅读的Django文档,似乎signals.py在app文件夹中是一个很好的开始,但我面临的问题是,当我创建信号时pre_save,我尝试从模型中导入类,它与import在我的模型中.

# models.py

from django.contrib.auth.models import User
from django.db import models
from django.utils.translation import gettext as _
from signals import *

class Comm_Queue(CommunicatorAbstract):
    queue_statuses = (
        ('P', _('Pending')),
        ('S', _('Sent')),
        ('E', _('Error')),
        ('R', _('Rejected')),
    )
    status          = models.CharField(max_length=10, db_index=True, default='P')
    is_html         = models.BooleanField(default=False)
    language        = models.CharField(max_length=6, choices=settings.LANGUAGES)
    sender_email    = models.EmailField()
    recipient_email = models.EmailField()
    subject         = models.CharField(max_length=100)
    content         = models.TextField()
Run Code Online (Sandbox Code Playgroud)
# signals.py

from django.conf import settings
from django.db.models.signals import pre_save
from django.dispatch import receiver
from …
Run Code Online (Sandbox Code Playgroud)

django django-signals

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

在post_save信号中访问用户的请求

我在我的项目中完成了以下post_save信号.

from django.db.models.signals import post_save
from django.contrib.auth.models import User

# CORE - SIGNALS
# Core Signals will operate based on post

def after_save_handler_attr_audit_obj(sender, **kwargs):
    print User.get_profile()

    if hasattr(kwargs['instance'], 'audit_obj'):
        if kwargs['created']:
            kwargs['instance'].audit_obj.create(operation="INSERT", operation_by=**USER.ID**).save()
        else:
            kwargs['instance'].audit_obj.create(operation="UPDATE").save()


# Connect the handler with the post save signal - Django 1.2
post_save.connect(after_save_handler_attr_audit_obj, dispatch_uid="core.models.audit.new")
Run Code Online (Sandbox Code Playgroud)

在operation_by列中,我想获取user_id并存储它.知道如何做到这一点?

python django signals

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

为python安装cx_oracle

在Debian 5上,我一直在尝试为python安装cx_oracle模块而没有任何成功.首先,我安装了Oracle-XE的客户端和它的依赖(在以下链接跟着教程这里).

然后,我使用/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin中的脚本来填充环境变量,例如PATH,ORACLE_HOME和NLS_LANG.

一旦完成,我试图运行:

sudo easy_install cx_oracle
Run Code Online (Sandbox Code Playgroud)

但我不断收到以下错误:

Searching for cx-oracle
Reading http://pypi.python.org/simple/cx_oracle/
Reading http://cx-oracle.sourceforge.net
Reading http://starship.python.net/crew/atuining
Best match: cx-Oracle 5.0.4
Downloading http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.0.4.tar.gz?download
Processing cx_Oracle-5.0.4.tar.gz
Running cx_Oracle-5.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-xsylvG/cx_Oracle-5.0.4/egg-dist-tmp-8KoqIx
error: cannot locate an Oracle software installation
Run Code Online (Sandbox Code Playgroud)

知道我错过了什么吗?

python oracle

33
推荐指数
3
解决办法
9万
查看次数

使用fabric开始使用nohup的后台进程

我正在尝试使用下面的nohup命令使用fabric启动celerycam进程.不幸的是,没有任何事情发生,手动使用相同的命令我可以启动过程但不通过结构.关于我如何解决这个问题的任何建议?

def start_celerycam():
    '''Start celerycam daemon'''
    with cd(env.project_dir):
        virtualenv('nohup bash -c "python manage.py celerycam --logfile=%scelerycam.log --pidfile=%scelerycam.pid &> %scelerycam.nohup &> %scelerycam.err" &' % (env.celery_log_dir,env.celery_log_dir,env.celery_log_dir,env.celery_log_dir))
Run Code Online (Sandbox Code Playgroud)

python fabric

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

如何在Python中循环**kwargs?

在下面的代码中,我想阅读obj.subject并将其放入var subject,也读取obj.body并放入body.首先,我想读取kwargs变量并在字符串中搜索要替换的关键字,如果不存在则继续.

我怎样才能kwargs在Python中进行迭代?

for key in kwargs:
    subject = str(obj.subject).replace('[%s]' % upper(key), kwargs[key])

for key in kwargs:
    body = str(obj.body).replace('[%s]' % upper(key), kwargs[key])

return (subject, body, obj.is_html)
Run Code Online (Sandbox Code Playgroud)

python kwargs

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

传递参数django信号 - post_save/pre_save

我正在研究Django 1.6中的通知应用程序,我想将其他参数传递给Django信号,例如post_save.我尝试使用functools的部分但没有运气.

from functools import partial
post_save.connect(
    receiver=partial(notify,
        fragment_name="categories_index"),
            sender=nt.get_model(),
            dispatch_uid=nt.sender
    )
Run Code Online (Sandbox Code Playgroud)

notifyfunction有一个关键字参数fragment_name,我希望在我的信号中默认传递.

有什么建议?

django signals argument-passing

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

geodjango使用mysql

我一直在使用django和mysql开发应用程序,我现在正在尝试从这里开始学习这个教程

http://docs.djangoproject.com/en/1.2/ref/contrib/gis/tutorial/

但是当我运行syncdb时出现以下错误,它失败了

AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'
Run Code Online (Sandbox Code Playgroud)

当我阅读时,它说如果改变后端使用postGIS,这可以解决.有没有办法继续使用mysql作为我的后端,但能够使用geodjango?如果没有,是否可以在同一个项目中使用它们?

问候,

python django geodjango

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

Safari的Angular和cloudfront

我们在cloudfront上设置了一个angularjs应用程序,该应用程序包含s3存储上的所有资产文件,并通过cloudfront用于SSL和性能.

我们的设置与本指南中描述的设置完全相同

https://rossfairbanks.com/2015/01/30/integrating-angular-s3-cloudfront.html

由于我们使用相同的帖子来创建我们自己的设置,似乎这适用于除Safari之外的所有浏览器.

在Safari上,当直接访问给定路径上的URL或刷新任何子页面时,ui-router会将用户页面重定向到登录页面.

但是对于暂存,我们有相同的设置,但直接在S3上运行而没有中间的CloudFront,因此没有SSL.但是,它似乎甚至在Safari上工作

所以,问题似乎是CloudFront和Safari更具体的问题.

任何人都可以建议可能的原因是什么?以及我们如何解决它?

更新:此问题可能与此错误有关https://bugs.webkit.org/show_bug.cgi?id=24175

safari amazon-s3 amazon-cloudfront angularjs

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

django rest框架更改主键使用unqiue字段

我有一个被称为模型的模型GameProfile,它与User模型是一对一的关系.我用过HyperlinkedModelSerializer我所有的设计.

对于GameProfile,用户字段被认为是查询的主键,它是唯一的但我没有将其设置为主键.有没有办法将django serializer的默认行为更改为指向user__id主键,并始终使用它来在详细信息视图中检索配置文件?

class GameProfileSerializer(serializers.HyperlinkedModelSerializer):
    """ 
    """
    user_pk = serializers.Field(source='user.id')

    class Meta:
        model = GameProfile


class GameProfileViewSet(viewsets.ModelViewSet):
    """
    """
    queryset = GameProfile.objects.all()
    serializer_class = GameProfileSerializer

    def get_queryset(self):
        """ get_queryset
        """
        queryset = super(GameProfileViewSet, self).get_queryset()
        if not queryset.exists():
            raise Http404
        if self.request.user.is_authenticated() and not self.request.user.is_superuser:
            return queryset.filter(user=self.request.user)
        return queryset
Run Code Online (Sandbox Code Playgroud)

请指教,提前谢谢:)

django django-rest-framework

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

使用UI更新模型和绑定更新操作

我目前使用AngularJS开发了一个内容表,该表将基于Angular Service"Model"进行填充,该服务调用Web服务并返回列表并使用ng-repeat并创建表及其所有内容.

目前的一切都很好,但我有一个小问题.作为表的一部分,我们输出一个操作按钮,当单击该按钮时,将调用更新当前记录的Web服务.我试图让记录数据自动更新,但我必须刷新页面才能看到更改.

这是我的代码

我的app.js.

angular.module('my_vehicles', ['vehicleServices', 'AccountsDirectives']);
Run Code Online (Sandbox Code Playgroud)

service.js

'use strict';

angular.module('vehicleServices', ['ngResource']).
    factory('Car', function($resource) {
        return $resource('/vehicle/api/car.json/:id', {},
            {
                query:   {method:'GET',     isArray:false},
                delete:  {method:'DELETE',  isArray:false},
                update:  {method:'PUT',     isArray:false}
            }
        );
});
Run Code Online (Sandbox Code Playgroud)

controller.js

'use strict';

function MyVehicleController($scope, Car) {

    var init = function() {
        $scope.page_has_next = true;
        $scope.cars = [];
        $scope.page = 1;
    };

    // initialize values
    init();


    Car.query({my_vehicle: true},
        // success
        function(data) {
            $scope.page_has_next = data.has_next;
            $scope.cars = data.objects;
        },
        // error
        function(data) {

        }
    );


    $scope.mark_sold = function(id, …
Run Code Online (Sandbox Code Playgroud)

angularjs

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