我一直在試圖找出我在django 1.8.3中創建的代碼是怎麼回事......當我使用django的測試運行器(以及更多具體的命令:python manage.py test predsite
)我總是得到相同的錯誤消息:AssertionError:假是不正確的(Django版本1.8.3)
File "C:\Users\dimitris\djangop\oursite\predsite\tests.py", line 117, in test_long_list self.assertTrue('pagination' in response.content) AssertionError: False is not true
下面是我在細節創建的代碼:
OURSITE(PROJECT)>> PREDSITE(APP)>>模型。 PY:
from django.db import models
from django.contrib.auth.models import User
import os
def hashed_uploads_dirs(instance, filename):
"""Returns path with md5 hash as directory"""
return os.path.join(instance.md5, filename)
class Datafile(models.Model):
file_id = models.IntegerField(default=0, primary_key=True)
datafile = models.FileField(upload_to='.')
user = models.ForeignKey(User, default=1)
md5 = models.CharField(max_length=32)
OURSITE >> PREDSITE >> VIEWS.PY:
class FileListView(ListView):
model = Datafile
queryset = Datafile.objects.order_by('-file_id')
context_object_name = "files"
template_name = "index.html"
paginate_by = 5
class FileAddView(FormView):
form_class = DatafileForm
success_url = reverse_lazy('home')
template_name = "add.html"
def form_valid(self, form):
form.save(commit=True)
messages.success(self.request, 'File uploaded!', fail_silently=True)
return super(FileAddView, self).form_valid(form)
class FileAddHashedView(FormView):
"""This view hashes the file contents using md5"""
form_class = DatafileForm
success_url = reverse_lazy('home')
template_name = "add.html"
def form_valid(self, form):
hash_value = hashlib.md5(form.files.get('datafile').read()).hexdigest()
# form.save returns a new Datafile as instance
instance = form.save(commit=False)
instance.md5 = hash_value
instance.save()
messages.success(
self.request, 'File hashed and uploaded!', fail_silently=True)
return super(FileAddHashedView, self).form_valid(form)
OURSITE >> OURSITE >> URLS.PY
urlpatterns = patterns('',
url(r'^add/$', FileAddView.as_view(), name='datafile-add'),
url(r'^add/files/$', FileListView.as_view(), name='home'),
) + static(settings.MEDIA_URL, datafile_root=settings.MEDIA_ROOT)
OURSITE >> PREDSITE >> CONTEXT_PROCESSORS.PY
from django.conf import settings
def static_root(request):
"""
Adds static-root context variables to the context.
"""
return {'STATIC_ROOT': settings.STATIC_ROOT}
def media_root(request):
"""
Adds media-root context variables to the context.
"""
return {'MEDIA_ROOT': settings.MEDIA_ROOT}
我們的網站>> PREDSITE >> FORM S.PY
class DatafileForm(forms.ModelForm):
"""Upload files with this form"""
class Meta:
model = Datafile
exclude = ('md5',)
OURSITE >> PREDSITE >> TESTS.PY(我提供了發生錯誤的部分)
def test_long_list(self):
"""Get a paginated home page"""
filename = "./file_{}.txt"
for x in xrange(10):
fb = Datafile(datafile=filename.format(x))
fb.save()
response = self.client.get(reverse('home'))
self.assertEqual(response.status_code, 200)
self.assertTrue('pagination' in response.content)
self.assertEqual(
len(response.context['files']),
FileListView.paginate_by)
而對於現在最重要的模板是以下: OURSITE >> TEMPLATES >> index.html的
{% extends "basic.html" %}
{% load static %}
{% block page_title %}Home{% endblock %}
{% block content %}
<h1>The files</h1>
{% if files %}
<div class="panel">
<table>
<thead>
<tr>
<th>Primary Key</th>
<th>Filename</th>
</tr>
</thead>
<tbody>
{% for file in files %}
<tr>
<td>{{ file.file_id }}</td>
<td><a href="{% get_media_prefix %}{{ file.datafile }}">{{ file.datafile }}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% if page_obj.has_other_pages %}
<div class="pagination-centered">
<ul class="pagination">
{% if paginator.has_previous %}
<li class="arrow"><a href="?page={{ paginator.previous_page_number }}">«</a></li>
{% else %}
<li class="arrow unavailable"><a href="">«</a></li>
{% endif %}
{% for pg in paginator.page_range %}
{% if page_obj.number == pg %}
<li class="current"><a href="?page={{ pg }}">{{ pg }}</a></li>
{% else %}
<li><a href="?page={{ pg }}">{{ pg }}</a></li>
{% endif %}
{% endfor %}
{% if paginator.has_next %}
<li class="arrow"><a href="?page={{ paginator.next_page_number }}">»</a></li>
{% else %}
<li class="arrow unavailable"><a href="">»</a></li>
{% endif %}
</ul>
</div>
{% endif %}
{% else %}
<!-- -->
<!-- Your database is empty -->
<!-- -->
<div class="panel">
<p>No files uploaded yet :(</p>
<p>(hint: Add a <a href="{% url 'datafile-add' %}" title="Add a file">file</a>)</p>
</div>
{% endif %}
{% endblock %}
既然很明顯在上面的模板中有一個叫做「分頁」的類,那麼在執行測試運行器時我怎麼可能得到這個錯誤信息呢?
非常感謝,提前!
歡迎計算器!請考慮發佈[mcve](http://stackoverflow.com/help/mcve)以獲得更快/更好的答案。 – Sait
感謝您的建議,從現在開始我會記住這一點! –