小编Sar*_*iev的帖子

原子事务不起作用 django rest

我正在使用 DRF、基于 API 视图类的视图、post 方法。参数是:文件逻辑:对文件进行一些验证并逐步保存文件(不同类型的对象)如果在保存文件的其余部分时发生异常,我试图回滚事务。我设置'ATOMIC_REQUESTS'True

class SaveXMlFile(APIView):
   authentication_classes = [TokenAuthentication]
   permission_classes = [IsAuthenticated]
   parser_classes = [FormParser, MultiPartParser]

   def post(self, request):
      """
          Save xml file
          ---
          # inputs
          parameters:
              - name: game_log_file
                description: Game log file
                type: file
                required: true
                paramType: post
                allowMultiple: false
      """
      try:
          # import pdb; pdb.set_trace()
          game_log_file = request.data['game_log_file']
          file_store = FileStore.objects.create(uploaded_file=game_log_file)
          xml_file_processing = ProcessXmlFile(file_store)
          already_saved = xml_file_processing.was_file_saved()
          player_exists = xml_file_processing.player_exists()
          if already_saved:
              file_store.delete()
              return Response({"info": "File was saved previously, no action taken place …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

Django 测试 - RequestFactory 中的访问会话

我正在RequestFactoryDjango 测试中使用,但找不到访问会话变量的正确方法,并且在尝试self.factory._session["zip_id"]或时出现以下错误 self.factory.session["zip_id"]

======================================================================
ERROR: test_middleware (dj_geo.tests.IPToZipMiddleWareTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "c:\dj_site_test\dj_geo\tests.py", line 36, in test_middleware
    assert self.factory._session["zip_id"] != None
AttributeError: 'RequestFactory' object has no attribute '_session'

----------------------------------------------------------------------



@override_settings(MIDDLEWARE_CLASSES=(
    'dj_geo.middleware.IPToZipMiddleWare'
))
class IPToZipMiddleWareTest(TestCase):

    def test_middleware(self):
        Zipcode.syncdb()
        assert Zipcode.objects.all().count() > 0

        self.factory = RequestFactory()
        self.request = self.factory.get('/', {}, **{'REMOTE_ADDR':'108.31.178.99'})
        assert self.factory._session["zip_id"] != None
        assert self.factory._session["zip_id"] != ""
Run Code Online (Sandbox Code Playgroud)

django django-testing django-tests

2
推荐指数
3
解决办法
1467
查看次数

Django ORM:通过过滤器查找获取字段的verbose_name

我可以使用查询我的模型MyModel.objects.filter(othermodel__nr='foo')

这很好。

我想获取该字段的verbose_name

例:

class OtherModel(models.Model):
    nr=models.IntegerField(verbose_name='Number')
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,因为我可以访问OtherModel,所以很容易,但是我想使其通用。

如何获取此处在“键”中使用的字段的详细名称?

MyModel.objects.filter(**{key: value})

我搜索解决双下划线的方法。在此示例中,“ othermodel__nr”改为(例如)“ Number”。

更新资料

在上面的示例中,我知道引用的模型是OtherModel。但是我搜索了适用于任何字符串的解决方案。例如这样:

MyModel.objects.filter(**{str_containing_three_double_underscores: 'foo'})
Run Code Online (Sandbox Code Playgroud)

我搜寻:

get_verbose_name(str_containing_three_double_underscores) --> MyVerboseName
Run Code Online (Sandbox Code Playgroud)

django django-orm

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

如何将对象传递给 TemplateView?

我刚刚学习 CBV,并且在将对象传递给 TemplateView 时遇到了困难。这非常令人沮丧,因为我知道这应该是非常基本的。

这是我的观点.py:

from __future__ import absolute_import
from django.views import generic
from company_account.models import CompanyProfile

class CompanyProfileView(generic.TemplateView):
    template_name = 'accounts/company.html'

    def get_context_data(self, **kwargs):
        context = super(CompanyProfileView, self).get_context_data(**kwargs)
        return CompanyProfile.objects.all()
Run Code Online (Sandbox Code Playgroud)

这是我的 Models.py:

from __future__ import unicode_literals

from django.db import models
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse

class CompanyProfile(models.Model):
    company_name = models.CharField(max_length=255)

    def __str__(self):
        return self.company_name
Run Code Online (Sandbox Code Playgroud)

这是 urls.py

urlpatterns = [
    url(r'^accounts/companyprofile/$', CompanyProfileView.as_view()),
]
Run Code Online (Sandbox Code Playgroud)

最后,这是模板:

{% extends '_layouts/base.html' %}

{% block title %}Company Profile{% endblock %}

{% block …
Run Code Online (Sandbox Code Playgroud)

django django-templates

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

如何在Django中设置会话超时?

我想在我的网站中实现登录和注销会话,经过一段时间后会话应自动过期。如果用户登录,则该用户无法返回。

django session python-3.x

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