小编Ale*_*dor的帖子

CSRF失败:CSRF令牌丢失或不正确

我正在使用Django 1.7和django-rest-framework.

我创建了一个API,它返回了一些JSON数据,并将其放入我的 settings.py

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),
    'DEFAULT_RENDERER_CLASSES': (
    #   'rest_framework.renderers.XMLRenderer',
    'rest_framework.renderers.JSONRenderer',
    #   'rest_framework.renderers.BrowsableAPIRenderer',
    )
}
Run Code Online (Sandbox Code Playgroud)

当我进行GET调用时,它会返回所有数据,但是当我尝试使用PUT/PATCH时,我得到:

--------Response Headers---------
Status Code: 403
Date: Wed, 29 Oct 2014 18:51:42 GMT
Vary: Cookie
Server: WSGIServer/0.1 Python/2.7.8
Allow: GET, POST, PUT, PATCH, HEAD, OPTIONS
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
---------------------------------

--------Response Body-----------
{"detail": "CSRF Failed: CSRF token missing or incorrect."}
---------------------------------
Run Code Online (Sandbox Code Playgroud)

这只发生在我登录时,如果我是匿名的,我可以正确地进行PUT/PATCH.

我试过了@csrf_exempt,但我得到了错误,我已将其纳入rest_framework.permissions.AllowAny设置......

我不知道是怎么回事.有谁知道这是什么问题?

django django-rest-framework

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

Python静默打印PDF到特定的打印机

我有一个PDF文档,我想用我的python应用程序打印它.

我在这里尝试了解决方案(使用python的win32print模块打印PDF文档?)但是当我安装实际版本的Ghostscript 9.15时,它没有gsprint.exe

我正在使用的方式是使用命令,os.startfile('PDFfile.pdf', "print")但它打开默认查看器(我的是Adobe Reader),打印后它仍然打开,试图os.system("TASKKILL /F /IM AcroRD32.exe")杀死其他打开的窗口,我不想要它的过程.

使用下一个命令,它也会打印,但它也会打开Adobe Reader

currentprinter = win32print.GetDefaultPrinter()
win32api.ShellExecute(0, "print", 'PDFfile.pdf', '/d:"%s"' % currentprinter, ".", 0)
Run Code Online (Sandbox Code Playgroud)

我也看到了这个答案,但他们建议gsprint.exe再次使用

有人有gsprint.exe文件或任何其他解决方案吗?

注意:当我使用其他默认程序打开像Chrome或Windows Reader这样的PDF文件时,我总是在执行上述命令'(31, 'ShellExecute', 'A device attached to the system is not functioning.')'[Error 1155] No application is associated with the specified file for this operation: 'PDFfile.pdf'使用startfile命令时遇到异常

python printing pdf

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

Google Cloud Messaging - Google服务示例Gradle未知错误

我从这里下载了Google服务示例,当我尝试按照有关JSON的步骤运行它时,会弹出一个错误.问题是控制台和日志没有显示此错误.

看起来像这样. 在此输入图像描述

我不知道我做错了什么,但在此之后,我不能再尝试再次运行它,因为Run按钮被禁用了.

有什么想法解决这个问题?

更新:这是Gradle控制台中的日志:

Configuration on demand is an incubating feature.
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72211Library UP-TO-DATE
:app:prepareComAndroidSupportMediarouterV72200Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42211Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServices750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAds750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAnalytics750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppindexing750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppinvite750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppstate750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBase750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesCast750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesDrive750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesFitness750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesGames750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesGcm750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesIdentity750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesLocation750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesMaps750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesNearby750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesPanorama750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesPlus750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesSafetynet750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesWallet750Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesWearable750Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets …
Run Code Online (Sandbox Code Playgroud)

android google-cloud-messaging

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

Django REST Framework Serialize非常慢

我在Python 2.7和Django 1.7.1与django-restframework我有一个API,它返回我从数据库采取的一些特定值,它使用这样的自定义序列化器:

class InventarioSerializer(serializers.ModelSerializer):
    item = serializers.RelatedField(source='producto.item')
    ubicacion = serializers.RelatedField(source='ubicacion.nombre')
    class Meta:
        model = Inventario
        fields = ('epc','item','cantidad','ubicacion')
Run Code Online (Sandbox Code Playgroud)

我的API视图以这种方式调用:

class ItemEnInventarioViewSet(InventarioListModelMixin, viewsets.ModelViewSet):
    serializer_class = InventarioSerializer
    renderer_classes = (UnicodeJSONRenderer,)
Run Code Online (Sandbox Code Playgroud)

我的ListModelMixin是这样的:

class InventarioListModelMixin(object):
    def list(self, request, *args, **kwargs):
        item = request.QUERY_PARAMS.get('item', None)
        inventario = Inventario.objects.filter(producto__item = item)
        if inventario.count() == 0:
            return HttpResponse(u"El item %s no se encuentra en el inventario" % item,status=400)
        self.object_list = inventario
        # Switch between paginated or standard style responses
        page = self.paginate_queryset(self.object_list)
        if page is not …
Run Code Online (Sandbox Code Playgroud)

django serialization json django-queryset django-rest-framework

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

Docker Windows 如何在不登录的情况下保持容器运行?

我在装有 Windows Server 2016 的虚拟机中安装了 Docker。

我有一个来自 Python3 的 Linux 容器,带有使用--restart=always参数的 NGINX 服务器,它在我登录时运行良好,如果我重新启动虚拟机,该容器将不再活动,并且仅在我登录时启动。

另外,如果我注销,容器就会停止。

如何使容器在不登录的情况下作为服务运行并在注销时保持运行?

windows-server docker

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

在django中使用raise异常更正transaction.rollback()的方法

我正在使用Django 1.7.1和python 2.7,我正在做一些需要在事务中的POST请求,实际上我正在使用@transaction.atomic()装饰器使整个函数在一个事务中.

据我所知,这个装饰器类似于commit_on_success并在引发数据库错误时进行回滚.

是否可以引发一个自定义异常,使事务回滚但不使用保存点?我想在回滚完成时返回一个HttpResponse,解释为什么事务没有完成.

我有这个.

@transaction.atomic()
def salida_de_almacen(request):
    if request.method == 'POST':
        try:
            folio = request.POST['folio'] #Folio de la orden
            epccoma = request.POST['epc'] #EPCs separados por coma
            if folio is None or epccoma is None:
                return HttpResponse('Datos Incompletos',status=400)
            detalles = ODetalle.objects.filter(orden__folio=folio)
            epcs = epccoma.replace(' ','').split(',')
            inventario = Inventario.objects.filter(epc__in=epcs)
            mal = '' # Items incompletos
            for d in detalles:
                for i in inventario:
                    if i.producto.item == d.producto.item:
                        d.cantidad_entregada+=i.cantidad                        
                        i.delete()
                if d.cantidad_entregada<d.cantidad_ordenada:
                    mal+='%s,' % d.producto.item
            if mal …
Run Code Online (Sandbox Code Playgroud)

python django transactions exception-handling

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

带有viewset-router查询集过滤的Django REST Framework

我正在使用Django 1.7并且我使用REST Framework,我已经实现了一个简单的API来获取模型中的所有对象,但我想过滤放置外部对象值的结果.

例如,实际上我可以拥有一个包含此URL的对象列表

http://localhost:8000/api/ocompradetalle
Run Code Online (Sandbox Code Playgroud)

如果我只想要一个,我只能像这样放PK(PrimaryKey)

http://localhost:8000/api/ocompradetalle/1/
Run Code Online (Sandbox Code Playgroud)

我想更改主键以按外部字段值进行过滤,我的意思是,我有一个文档(OCompra),其值为"folio"字段,此文档将包含许多详细信息(OCompraDetalle),因此,我想要能够放这样的东西:

http://localhost:8000/api/ocompradetalle/F2033
Run Code Online (Sandbox Code Playgroud)

"F2033"是一个"作品集"值,响应应该在"作品集"字段中为我带来OCompra对象的所有细节.

这就是我现在所拥有的.

urls.py >>我有接收ViewSets的路由器

from rest_framework import routers
from inventario_rfid.views import OCompraViewSet, OCompraDetalleViewSet
from administracion.views import ProductoViewSet

router = routers.DefaultRouter()
router.register(r'ocompra',OCompraViewSet)
router.register(r'ocompradetalle',OCompraDetalleViewSet)
router.register(r'producto',ProductoViewSet)

urlpatterns = patterns('',
...
#APIS
url(r'^api/',include(router.urls)),
)
Run Code Online (Sandbox Code Playgroud)

serializers.py

from rest_framework import serializers
from administracion.serializers import ProductoSerializer
from .models import OCompra, OCompraDetalle

class OCompraSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = OCompra
        fields = ('folio','codigo_proveedor','nombre_proveedor','status','fecha','subtotal','iva','envio',
                  'otro','total',)

class OCompraDetalleSerializer(serializers.HyperlinkedModelSerializer):
    producto = ProductoSerializer(many=False)
    ocompra = OCompraSerializer(many = False) << I WANT TO FILTER BY …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

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

打开现有的Excel文件,保存样式,编辑和插入Python中的图像

我有一个"Excel模板",我需要打开,编辑一些单元格保持样式(字体,单元格宽度和高度,单元格合并等),最后添加或插入图像(jpg或png)以保存在新的文件.

我现在尝试了4个选项.

  1. XLWT/XLRD - 这个宝贝看起来是最有效的工作,它打开xlsx很好地保存所有样式,编辑单元格很容易(有一些技巧来保持风格)但它只插入位图(bmp) )图像,当它插入图像时,它变得拉伸,不保持方面无线电或大小,我想知道它是否有解决方案.
  2. XLSXWritter - 它非常实用,易于使用来创建新文件.它无法打开现有的.这不是一个选择.:(
  3. openpyxl - 它似乎用PIL(jpg,png,gif等)插入图像,但是当我打开现有的"模板"时,所有的样式都消失了,一切都!! 所以这不是一个选择.
  4. pythonexcels - 它似乎与Microsoft Office Excel和win32com一起工作,所以它可能不是一个交叉平台选项,我找不到用这个插入图像的方法......

我想我也可以使用一些PDF创建器,但我需要保持页面大小,因为我需要将创建的文件发送到打印机,但没有字母或A4大小,我需要打印不同大小的粘性标签.

我的问题是:xlwt有什么解决方案吗?还有其他解决方案吗?

python printing excel image

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

Django - Crispy Forms - 自定义输入定位和内联单选按钮

不久前我一直在使用 django-crispy-forms,我想知道是否有办法设置输入的位置,如col-md-XX类或其他东西,使其看起来更好,而不仅仅是字段列表。

下面是一个例子:

这是脆皮形式的“正常”渲染,使用{{ form | crispy }}{% crispy form %} 在此处输入图片说明

我想在 forms.py 或类似的东西中使用 python 代码呈现这样的效果。实际上,我是通过键入 HTML 代码并使用as_crispy_field标记进行渲染来实现的。 在此处输入图片说明

最后,当我渲染表单时,{% crispy form %}我可以使用内联样式的单选按钮,但使用as_crispy_field标记,即使InlineRadios在助手中布局,单选按钮仍然看起来垂直。

as_crispy_field 在此处输入图片说明

{% crispy form %} 在此处输入图片说明

有没有办法让收音机看起来水平或内联as_crispy_field标签?

html django django-crispy-forms

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

Django - 迁移外键字段类型与当前类型不匹配

我正在使用 MSSQL 数据库,并且在 Django 进入展会之前我已经创建了一些表,因此使用Inspectdb我获得了带有 Meta 选项的模型managed=False。然后我创建了其他与 Django 迁移相关的内容。这些模型是这样的:

class ModelAlreadyCreated(models.Model):
    # This PK field is set as varchar(16)
    id = models.CharField(primary_key=True, db_column='CVE', max_length=16)
    ...other fields

    class Meta:
        managed=False

class DjangoModel(models.Model):
    model_ac_fk = models.ForeignKey(ModelAlreadyCreated)
    ... other fields
Run Code Online (Sandbox Code Playgroud)

当我使用创建迁移文件时,makemigrations我得到:

migrations.CreateModel(
        name='DjangoModel',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('model_ac_fk', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ModelAlreadyCreated')),
            ...
        ],
    ),
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切似乎都正常,但使用migrate命令时会显示此错误:

django.db.utils.OperationalError: (1778, "Column 'CVE' is not the same data 
type as referencing column 'model_ac_fk' in foreign key 'model_ac_fk_fk_CVE'.DB-Lib error …
Run Code Online (Sandbox Code Playgroud)

python sql-server django django-migrations

5
推荐指数
0
解决办法
1059
查看次数

Django - 使用子对象过滤查询集(外键)

我有 3 个模型,其中 2 个对应于第一个。

class Parent(models.Model):
    name = models.CharField....
    ...

class Child1(models.Model):
   parent = models.ForeignKey(Parent)
   ...

class Child2(models.Model):
   parent = models.ForeignKey(Parent)
   ...
Run Code Online (Sandbox Code Playgroud)

现在,在我看来,我有 2 个查询集过滤了Child1Child2对象。

有没有办法检索Parent过滤查询集中的所有对象?

就像是...

children1 = Child1.objects.filter(blah=blah)
children2 = Child2.objects.filter(blah=blah)
parents = Parent.objects.filter(self__in=children1 or self__in=children2)
Run Code Online (Sandbox Code Playgroud)

注意上面的代码根本不起作用,它只是一个想法。

django django-queryset

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