python - Django KeyError 'pk' POST 方法
问题描述
我有用于排序对象的表单中的 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
我的网址.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 行,内部响应 = 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) 文件中“ /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 行,在 dispatch return super().dispatch(request, *args, **kwargs) 文件“/home/abdel/Desktop/eclair- packager/eclair_env/lib/python3.6/site-packages/django/contrib/auth/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”,第 96 行,在 post obj = self.get_package() 文件“/home/abdel/Desktop/eclair-packager/packager/permission_mixins .py”,第 78 行,在 get_package 返回 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
解决方案
您可能在视图或 url 部分中分配 pk(主键)时遇到问题,这可能有助于结帐
推荐阅读
- python - python中带有非结构化空间的文本到csv格式
- python - 应用上下文和 Flask Principal 的问题
- asp.net-mvc - 如何在 ASP.NET 中设置文档模式
- java - 如何在构造函数中通过扫描仪从用户那里获取多个输入?
- linux - 当 Bash 脚本调用另一个 Bash 脚本时出现回声问题
- javascript - NightmareJS 没有显示任何内容
- c++ - C++ - 使用 TCP/IP 模拟太慢
- java - 邮递员不提供 URL,但似乎在 cli 中运行
- windows - 创建新用户后,Windows cmd git 无法访问 .git/config
- matlab - Matlab 选择和使用 splitapply、rowfun 和 varfun 的最佳实践?