【问题标题】:Django KeyError 'pk' POST methodDjango KeyError 'pk' POST 方法
【发布时间】:2019-05-24 15:52:51
【问题描述】:

我有用于排序对象的表单中的 post 方法

<form method="post" action="{%  url 'package_dashboard' %}">
{% csrf_token %}
    <button  type="submit" name="order_by_title">sortByName</button>
    <button  type="submit" name="order_by_date">sortByDate</button>
</form>

我的意见.py

class PackageDashboardView(PackageAccessMixin, ListView):
model = Package
template_name = "packages/dashboard.html"

def get_queryset(self):
    queryset = Package.objects.all().order_by('title', 'version__name'). \
        select_related('title', 'version').defer('title__metadata', 'validation', 'translations', 'diff_fields')
    if "order_by_date" in self.request.GET:
        queryset = Package.objects.all().order_by('-started', 'version__name'). \
            select_related('title', 'version').defer('title__metadata', 'validation', 'translations', 'diff_fields')
    elif 'order_by_title' in self.request.GET:
        queryset = Package.objects.all().order_by('title', 'version__name'). \
            select_related('title', 'version').defer('title__metadata', 'validation', 'translations', 'diff_fields')
    return queryset

我的 urls.py

url(r'^packages/$', packages.PackageDashboardView.as_view(), name="package_dashboard"),

错误

内部服务器错误:/packages/ Traceback(最近一次调用最后一次):
文件 “/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/core/handlers/exception.py”, 第 41 行,在内部 response = get_response(请求)文件“/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/core/handlers/base.py”, 第 187 行,在 _get_response response = self.process_exception_by_middleware(e, request) 文件“/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/core/handlers/base.py”, 第 185 行,在 _get_response 中 response = Wrapped_callback(request, *callback_args, **callback_kwargs) 文件 "/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/views/generic/base.py", 第 68 行,在视图中 返回 self.dispatch(request, *args, **kwargs) 文件“/home/abdel/Desktop/eclair-packager/packager/permission_mixins.py”, 第 20 行,正在调度中 返回 super().dispatch(request, *args, **kwargs) 文件“/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/contrib/auth/mixins.py ", 第 56 行,正在调度中 return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) File "/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/views/generic/基础.py", 第 88 行,正在调度中 返回处理程序(请求,*args,**kwargs)文件“/home/abdel/Desktop/eclair-packager/packager/permission_mixins.py”, 第 96 行,在帖子中 obj = self.get_package() 文件“/home/abdel/Desktop/eclair-packager/packager/permission_mixins.py”, 第 78 行,在 get_package 中 return get_object_or_404(Package, pk=self.kwargs['pk'], **kwargs) KeyError: 'pk' [26/Dec/2018 11:35:56] "POST /packages/ HTTP/1.1" 500 109583

【问题讨论】:

  • 错误信息告诉你问题出在permission_mixins.py,你没有显示。
  • 您找到解决方案了吗?

标签: python html django


【解决方案1】:

您可能在视图或 url 部分中分配 pk(主键)时遇到问题this may help checkout

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2023-04-06
    相关资源
    最近更新 更多