2017-04-16 1 views
0

私は単純なSingleObjectMixinクラスを作成しようとしますが、後でAJAXデータストリーミングを提供するためにrender_json_response()でそれを使用します。主な目的はオンラインストアのバスケットです。だから、簡単なテストクラスがあります:Django SingleObjectMixin

class Test(SingleObjectMixin): 
    model = GoodsDescription 
    slug_url_kwarg = 'test_id' 
    slug_field = 'artikul' # pk field in 'GoodsDescription' table 

    def get(self, request, *args, **kwargs): 
     self.object = self.get_object() 
     return render(request, 'temp_code.html', {'msg':self.object.name}) 

ので間違いがある:

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/admin/test%3D5/ 

Django Version: 1.10.5 
Python Version: 2.7.12 
Installed Applications: 
['alexbase', 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'easy_thumbnails'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware'] 



Traceback: 

File "/home/user/.local/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner 
    39.    response = get_response(request) 

File "/home/user/.local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "/home/user/.local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/home/user/.local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 
    23.     return view_func(request, *args, **kwargs) 

Exception Type: TypeError at /admin/test=5/ 
Exception Value: object() takes no parameters 
+0

私たちはurls.pyをご覧ください。また、私はあなたが 'get'のidの変数が不足しているかもしれないと思います – intelis

答えて

1

SingleObjectMixin、よく、ミックスインです。あなたが継承できる完全なビューではありません。代わりにDetailViewを使用する必要があります。

0

URL confの文字列は右のようになります。

url(r'^(?:test=(?P<test_id>\d+))/$', login_required(views.TestAJAXView), name='temp_code'), 

最後に、私はこのようなクラスを使用します:

class TestAJAXView(JSONResponseMixin, SingleObjectMixin): 
    model = GoodsDescription 
    slug_url_kwarg = 'test_id' 
    slug_field = 'artikul' 
    json_dumps_kwargs = {"indent": 2} 

    def get(self, request, *args, **kwargs): 
     self.object = self.get_object() 

     context_dict = { 
      "category": self.object.category, 
      "name": self.object.name 
     } 

     return self.render_json_response(context_dict) 

しかし、例外が発生したので、私はこの試みた:

class Test(SingleObjectMixin): 
    model = GoodsDescription 
    slug_url_kwarg = 'test_id' 
    slug_field = 'artikul' # pk field in 'GoodsDescription' table 

    def get(self, request, *args, **kwargs): 
     self.object = self.get_object() 
     return render(request, 'temp_code.html', {'msg':self.object.name}) 
関連する問題