- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在 django 站点上进行迁移,我将 list_object View 重写为继承自 django.views.generic.ListView 的基于类的 View ,但是在创建 get_context_data 方法时出现错误
我的代码在这里:
class ForumView(ListView):
context_object_name = 'forum'
template_name = 'forum/thread_list.html',
paginate_by = FORUM_PAGINATION
def get_queryset(self):
try:
f = Forum.objects.for_groups(self.request.user.groups.all()).select_related().get(slug=self.kwargs['slug'])
except Forum.DoesNotExist:
raise Http404
return f.thread_set.select_related().all()
def get_context_data(self, **kwargs):
try:
f = Forum.objects.for_groups(self.request.user.groups.all()).select_related().get(slug=self.kwargs['slug'])
except Forum.DoesNotExist:
raise Http404
form = CreateThreadForm()
child_forums = f.child.for_groups(self.request.user.groups.all())
extra_context = {
'forum': f,
'child_forums': child_forums,
'form': form,
'login': {
'reason': _('create a new thread'),
'next': f.get_absolute_url(),
},
'section': 'forum',
}
context = super(ForumView, self).get_context_data(**kwargs)
for key in extra_context:
context[key] = extra_context[key]
return context
和 url.py
url(r'^thread/(?P<thread>[0-9]+)/$', ThreadView.as_view(), name='forum_view_thread'),
但是 django 返回一个调试页面:
Exception Value: get_context_data() keywords must be strings
Python Version: 2.7.3
Django Version: 1.5.2
Request URL: http://localhost:8000/forum/thread/1/
Exception Location: /Library/Python/2.7/site-packages/django/views/generic/list.py in get_context_data, line 116
traceback:
/Library/Python/2.7/site-packages/django/core/handlers/base.py in get_response
response = callback(request, *callback_args, **callback_kwargs) ...
/Library/Python/2.7/site-packages/django/views/generic/base.py in view
return self.dispatch(request, *args, **kwargs) ...
/Library/Python/2.7/site-packages/django/views/generic/base.py in dispatch
return handler(request, *args, **kwargs) ...
/Library/Python/2.7/site-packages/django/views/generic/list.py in get
context = self.get_context_data(object_list=self.object_list) ...
/Users/foulwall/Dropbox/mldata/forum/views.py in get_context_data
context = super(ThreadView, self).get_context_data(**kwargs) ...
/Library/Python/2.7/site-packages/django/views/generic/list.py in get_context_data
return super(MultipleObjectMixin, self).get_context_data(**context) ...
谁有解决方案?谢谢~
最佳答案
我怀疑您发送到 get_context_data
的 kwargs 之一不是简单的字符串对象。这可以作为 kwargs 字典中的键传递。也许它是一个惰性或可翻译的字符串?
问this question的人也发生了类似的事情.如果是同样的问题,我建议你确保变量名确实是一个简单的字符串。变量名称中的 Unicode 字符很奇怪,但顺便说一句,可以接受。
关于python - 基于 Django 类的 View 出现错误 : 'get_context_data() keywords must be strings' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18291291/
我是 Django 的新手。有一个 html 页面 (project_details) 应该显示项目的标题和任务,但只显示项目的标题,而不是任务。任务存在,问题出在过滤器上!!! View .py 错
类对象属性的get_context_data。 我在 django/contrib/auth/views.py 中遇到 PasswordContextMixin class PasswordConte
# views.py from django.views.generic import ListView from books.models import Publisher class Publis
我收到这个错误 TypeError at /debate/1/ get_context_data() takes exactly 2 arguments (1 given) 现在它被定义为: def
分页工作正常,直到我将 reverse arg 添加到 QS 以便以反向模式排序查询集。之后分页就被破坏了。我可以使用 get() 函数并在那里对其进行分页,但我认为对于这个问题应该是更好的解决方案。
分页工作正常,直到我将 reverse arg 添加到 QS 以便以反向模式排序查询集。之后分页就被破坏了。我可以使用 get() 函数并在那里对其进行分页,但我认为对于这个问题应该是更好的解决方案。
我有以下表单的 Django 代码(django 版本 1.11): class MyDocumentUpdateView(UpdateView): """ We extend UpdateV
我试图通过从多个上下文对象中进行选择来对views.py 中的get_context_data 进行分页。代码示例条件语句中只显示了两个选择,但我还有几个选择,基本上涵盖了表单提交的所有选择。然而,最
这是简化的代码示例,但可能有人在没有代码的确切副本的情况下知道问题发生的原因。所以: class FooView(TemplateView): template_name = 'foo.html'
我最近了解到,当您特别想要执行默认 View 以外的操作时,您应该重写 get 方法: class ExampleView(generic.ListView): template_name =
因为 get_queryset() 只返回一个查询集,我需要查询集 search_store 的长度到模板文件。因此,我尝试通过 get_context_data 将值发送到模板。 我知道我可以通过
我是 Django 的新手。我想使用 mixin 将一些数据返回到多个基于类的 View 。我在 mixin 中定义的 get_context_data 似乎没有在 View 类中调用。 class
在 Django 中使用基于类的 View ,我在 DetailView 中遇到问题。 我想要得到的是特定类型的所有电影的列表,即:Movie.objects.all().filter(genre=g
我们可以在 Django 中做到这一点: class LoginView(generic.FormView): def get_context_data(self, **kwargs):
我是 Django 的新手。我想使用 mixin 将一些数据返回到多个基于类的 View 。我在 mixin 中定义的 get_context_data 似乎没有在 View 类中调用。 class
在 Django 中使用基于类的 View ,我在 DetailView 中遇到问题。 我想要得到的是特定类型的所有电影的列表,即:Movie.objects.all().filter(genre=g
我在 Django 1.9.7 中有一个通用的 DetailView,它使用我的模型 Quiz 来显示 super 省时的无麻烦 View (谢谢 Django) 。但是,我正在努力访问 Quiz 对
我正在从提交的表单中生成一个对象。我想将生成的 AutoField 作为隐藏的表单元素传递给下一个表单。但是,我不知道如何将变量从 post() 传递到 get_context_data()。我知道
我想使用 kwargs 并将 kwargs 元素从 Django CBV 传递到我在 __init__ 中的表单文件。 我有一个带有 get_context_data() 的 View class,它
class SomeView(DetailView) : def __init__(self, *kwargs): print(type(self), dir(self))
我是一名优秀的程序员,十分优秀!