我正在使用 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) 我正在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) 我可以使用查询我的模型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) 我刚刚学习 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) 我想在我的网站中实现登录和注销会话,经过一段时间后会话应自动过期。如果用户登录,则该用户无法返回。