django - Django AttributeError:'str'对象没有属性'get'
问题描述
访问 url 时,它会返回问题标题中提到的错误。
View 本身是一个 ListView。
当我调试视图时,它只循环通过调度程序函数并返回以下错误而没有进入查询集。这是代码。
列表显示
class MailingListView(ListView, LoginRequiredMixin):
# model = MailingList
template_name = 'mailinglist/mailing_list.html'
def get_queryset(self):
return MailingList.objects.filter(owner=self.request.user)
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return reverse('user:login')
return super().dispatch(request, *args, **kwargs)
模型
class MailingList(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4(), editable=False)
name = models.CharField(max_length=140)
owner = models.ForeignKey(to=user_model,
on_delete=models.CASCADE)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('mailinglist:manage_list', kwargs={'pk': self.id})
def user_can_use_mailinglist(self, user):
return user == self.owner
追溯
> Internal Server Error: /mailinglist/ Traceback (most recent call
> last): File
> "/venv/lib/python3.7/site-packages/django/core/handlers/exception.py",
> line 34, in inner
> response = get_response(request) File "/venv/lib/python3.7/site-packages/django/utils/deprecation.py",
> line 93, in __call__
> response = self.process_response(request, response) File /venv/lib/python3.7/site-packages/django/middleware/clickjacking.py",
> line 26, in process_response
> if response.get('X-Frame-Options') is not None: AttributeError: 'str' object has no attribute 'get'
解决方案
reverse() 返回一个字符串。但是您应该返回 HTTP 响应。
dispatch
中的变化MailingListView
。
from django.http import HttpResponseRedirect
return HttpResponseRedirect(reverse('user:login'))
推荐阅读
- r - R - 从单词列创建句子 ID
- javascript - 如何使用此 JSON 对象在 javascript 中构建此 JSON
- python - 对单个函数的重叠调用,希望每个函数在执行函数之前等待一秒钟,但不要强制所有人等待
- python - 以烧瓶形式(WTForm)在嵌套的 FieldList/FormField 中加载数据
- audio - 如何在 SwiftUI 中等待音频完成?
- vba - 将数据从 Access 365 导出到 IBM i-Series v7r1
- c++ - 如何将 IPropertyBag 持久化到磁盘
- ios - 如何从 Firebase 存储中的文档中获取项目并使用 SWIFT 将其添加到视图中
- jquery - 无法更改当前的css类
- arrays - 将字符串方法存储在变量中并附加到另一个包含字符串的变量以便它们运行的方法?