我有一個列表記錄的視圖。如果我已經登錄,我可以毫無問題地訪問它。如果還沒有登錄並嘗試訪問該頁面,我會重定向到登錄頁面。到現在爲止還挺好!Django:http_permissions干擾測試
但在我的測試中,我有以下問題:我能夠成功登錄,但是當我嘗試執行獲取列出記錄時,我得到了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? Django的Webserver服務器還是直接在Django中?我們在說什麼樣的登錄?基本身份驗證? – Ben
直接在Django。 Auth使用自定義網址進行。在測試中,我們像這樣使用它:'self.client.post('/ accounts/login /?next = /',data = data,follow = True)' –