私はリストレコードを持っています。すでにログインしている場合は、問題なくアクセスできます。まだログインしておらず、ページにアクセスしようとすると、ログインページにリダイレクトされます。ここまでは順調ですね!Django:http_permissionsがテストを妨害しています
私のテストでは、私は正常にログインすることができますが、レコードを取得するためにgetを実行しようとすると、403(許可が拒否されました)と302(リダイレクトログインページ)。私は何が起こっているのか分からない。私はhttp_permissionsをコメントし、テストに合格したので、http_permissionsがテストに干渉していることを知っています。このhttp_permissionsをテストユーザーに付与する必要がありますか?誰もがこれにいくつかの光を投げることができますか?ここに私のコードです:
teleconsultoria/models.py
...
class Bibliografia(BaseModel):
ativa = models.BooleanField(u'Ativa', default=True)
link = models.CharField(u'Link', blank=True, max_length=2000,)
nome = models.CharField(u'Nome', blank=False, max_length=255,)
arquivo = SizeRestrictedFileField(
u'PDF da Bibliografia', upload_to='bibliografia', blank=True, null=True,
)
class Meta:
verbose_name = u'Bibliografia'
verbose_name_plural = u'Bibliografias'
permissions = (
('ver_bibliografia', u'Pode ver bibliografia'),
('criar_bibliografia', u'Pode criar bibliografia'),
('alterar_bibliografia', u'Pode alterar bibliografia'),
('excluir_bibliografia', u'Pode excluir bibliografia'),
)
...
teleconsultoria/views.py
...
class BibliografiaListView(ModelListView):
model = Bibliografia
app_name = 'teleconsultoria'
table = BibliografiaTable
search_fields = ('id', 'ativa', 'nome', 'link')
http_permissions = ('teleconsultoria.ver_bibliografia',)
def get_queryset(self, request):
return self.model.objects.order_by('id')
...
teleconsultoria/tests.py
def test_ver_lista_bibliografias_se_existirem_bibliografias(self):
Bibliografia.objects.create(**{'nome': 'Bibliografia 1'})
Bibliografia.objects.create(**{'nome': 'Bibliografia 2'})
Bibliografia.objects.create(**{'nome': 'Bibliografia 3'})
response = self.client.get('/teleconsultoria/bibliografia/')
self.assertIn('3 Bibliografias', response.content)
AssertionError: '3 Bibliografias' not found in ''
どこログインhandeldはありますか? WebサーバーがDjangoの直前、または直接Djangoに入っていますか?私たちはどんな種類のログインをしていますか?基本認証? – Ben
直接djangoにあります。認証はカスタムURLを使用して行われます。テストでは、 'self.client.post( '/ accounts/login /?next = /'、data = data、follow = True)' –