Когда я пытался использовать сеанс в классе DetailView в проекте Django, у меня возникла ошибка, и она не работает из-за отсутствия объекта запроса.
в этом случае, как мне это сделать? ?
Не могли бы вы рассказать мне, как мне решить эту проблему?
Заранее спасибо.
код ошибки
TypeError at /detail/41/
check_session() missing 1 required positional argument: 'request'
views.py
class DetailView(LoginRequiredMixin, generic.DetailView):
model = sampleDB
template_name = 'detail.html'
def check_session(self, request):
if not 'history' in request.session:
request.session['history'] = {'user': self.request.user, 'id': self.kwargs['pk']}
def get_context_data(self, **kwargs):
self.check_session()
context = super().get_context_data(**kwargs)
return context
project / urls.py
from django.contrib import admin
from django.contrib.staticfiles.urls import static
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('main.urls')),
path('accounts/', include('allauth.urls')),
]
app / urls.py
from django.urls import path
from . import views
app_name = 'app'
urlpatterns = [
path('', views.WelcomeView.as_view(), name='welcome'),
path('home/', views.HomeView.as_view(), name='home'),
path('detail/<int:pk>/', views.DetailView.as_view(), name='detail'),
path('detail_edit/<int:pk>/', views.DetailEditView.as_view(), name='detail_edit'),
path('resister_history/', views.ResisterHistoryView.as_view(), name='resister_history'),
path('resister_vegetable/', views.ResisterVegetableView.as_view(), name='resister_vegetable'),
path('delete/<int:pk>/', views.DeleteView.as_view(), name='delete'),
path('inquiry_login/', views.InquiryLoginView.as_view(), name='inquiry_login'),
path('inquiry/', views.InquiryView.as_view(), name='inquiry'),
path('404/', views.Error404View.as_view(), name='404'),
path('403/', views.Error403View.as_view(), name='403'),
path('500/', views.Error500View.as_view(), name='500'),
]
Среда разработки
- Python: 3,7,5
- Django: 2.2.2