当我在Django项目中尝试使用DetailView类上的会话时,出现了一个错误,由于缺少一个请求对象,该会话无法工作
那样的话,我该怎么办
你介意告诉我如何解决这个问题吗
先谢谢你
错误代码
TypeError at /detail/41/
check_session() missing 1 required positional argument: 'request'
视图.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/url.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/url.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'),
]
开发环境
check_session() missing 1 required positional argument: 'request'
在某个时刻,您调用方法
check_session()
。方法check_session()
的定义如下:def check_session(self, request):
这意味着您指示该方法希望您这样调用它:
check_session(request=some_value)
而不是check_session(some_value)
可以像
check_session(some_value)
一样传递它,但随后必须遍历kwargs
才能找到要查找的内容。但可读性较差,工作较多早上喝咖啡后:
在views.py中,从
get_context_data
调用self.check_session()
。check_session
希望向它传递一些东西。你没有通过任何考试相关问题 更多 >
编程相关推荐