简体   繁体   English

Django KeyError'pk'POST方法

[英]Django KeyError 'pk' POST method

i have post method in form for sort objects 我有形式的对象排序方法

<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>

my views.py 我的views.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

my urls.py 我的urls.py

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

the error 错误

Internal Server Error: /packages/ Traceback (most recent call last): 内部服务器错误:/ packages /追溯(最近一次通话):
File "/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner response = get_response(request) File "/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view return self.dispatch(request, *args, **kwargs) File "/home/abdel/Desktop/eclair-packager/packager/permission_mixins.py", line 20, in dispatch return super().dispatch(request, *args, **kwargs) File "/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/contrib/auth/ 文件“ /home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/core/handlers/exception.py”,第41行,内部响应= get_response(request)文件“ / 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)File“ /home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/core/handlers/base.py“,第185行,在_get_response中,response = wrapd_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)File“ /home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/contrib/auth/ mixins.py", line 56, in dispatch return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) File "/home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/site-packages/django/views/generic/base.py", line 88, in dispatch return handler(request, *args, **kwargs) File "/home/abdel/Desktop/eclair-packager/packager/permission_mixins.py", line 96, in post obj = self.get_package() File "/home/abdel/Desktop/eclair-packager/packager/permission_mixins.py", line 78, in 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 mixins.py“,第56行,在分派中返回super(LoginRequiredMixin,self).dispatch(request,* args,** kwargs)文件” /home/abdel/Desktop/eclair-packager/eclair_env/lib/python3.6/ site-packages / django / views / generic / base.py“,第88行,在调度返回处理程序中(请求,* args,** kwargs)文件“ /home/abdel/Desktop/eclair-packager/packager/permission_mixins.py ”,在文章obj = self.get_package()文件中的第96行,“ / home / abdel / Desktop / eclair-packager / packager / permission_mixins.py”,在get_package中的第78行,返回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

您可能在视图或网址部分分配pk(主键)时遇到问题, 这可能有助于结帐

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM