【问题标题】:Error in django unittest: 'object has no attribute' objectdjango unittest 中的错误:“对象没有属性”对象
【发布时间】:2021-02-14 08:03:57
【问题描述】:

我开始测试views,但是我在测试中发现了一个错误,告诉我哪里出错了,我刚开始学习,所以不要严格判断 我的观点:

    `class MovieDetailView(Genre, DetailView):
            
            model = Movie
            slug_field = "url"
        
        
            def get_context_data(self, **kwargs):
                context = super().get_context_data(**kwargs)
                context["star_form"] = RatingForm()
                return context
        `
                    
                    

我的测试如下所示:

        `def test_starform_set_in_context(self):
            request = RequestFactory().get('some-slug')
            view = MovieDetailView()
            view.setup(request)
            context = view.get_context_data()
            self.assertIn('star_form', context))`

网址:

 `path("<slug:slug>/", views.MovieDetailView.as_view(), name="movie_detail"),`

【问题讨论】:

  • 显示完整的回溯。
  • 回溯(最近一次调用最后):文件“C:\Users\endro\PycharmProjects\Django_movi\movies\Tests\test_views.py”,第 35 行,在 test_starform_set_in_context context = view.get_context_data()文件“C:\Users\endro\PycharmProjects\Django_movi\movies\views.py”,第 30 行,在 get_context_data context = super().get_context_data(**kwargs) 文件“C:\Users\endro\PycharmProjects\Django_movi\ venv\lib\site-packages\django\views\generic\detail.py",第 94 行,在 get_context_data if self.object: AttributeError: 'MovieDetailView' object has no attribute 'object'

标签: python-3.x django unit-testing django-views


【解决方案1】:

我认为这是因为 Django 的 get_context_data() 函数使用 'object' 将其传递到上下文中。所以,我建议你使用 get_object() 方法。

查看更多详情:https://ccbv.co.uk/projects/Django/3.0/django.views.generic.detail/DetailView/

基本上你需要返回一个对象,例如

def get_object(self,queryset=None):
    obj = Movie.object.get(slug=self.kwargs.get('slug'))
    return obj #also handle 404

或者再尝试一件事:

slug_fields = slug

路径应该是

path("<str:slug>/", views.MovieDetailView.as_view(), name="movie_detail"), 

【讨论】:

  • 我在测试中进行了更改,但出现错误:Generic detail view MovieDetailView must be called with an object pk or a slug in the URLconf
  • 哦,我明白了,应该是 path("/", views.MovieDetailView.as_view(), name="movie_detail"),
  • 出现更改url错误:MovieDetailView'对象没有属性'kwargs'
猜你喜欢
  • 2014-05-07
  • 2017-01-22
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 2018-09-13
  • 2014-08-31
  • 2011-06-23
相关资源
最近更新 更多