Форум сайта python.su
Добрый вечер всем, нуждаюсь в помощи знающих людей.
Есть модель (лог-журнал запросов):
... class RequestLog (models.Model): datetime = models.CharField(max_length=25) requested_url = models.CharField(max_length=255) request_type = models.CharField(max_length=10) request_ip = models.CharField(max_length=20) def __unicode__(self): return self.requested_url
#Здесь сохраняем class SaveRequestdb(object): def process_request(self, request): if request: rp = request.path req = RequestLog(requested_url=request.build_absolute_uri(rp), datetime=datetime.now(), request_type=request.method, request_ip=request.META['REMOTE_ADDR'], ) req.save() #Здесь отображаем последних 10 запросов class RequestLogMw(object): def process_response(self, request, response): if request.path.strip().endswith("requests/"): req = RequestLog.objects.filter().order_by('-datetime')[: 10] return render_to_response("url_log.html", {'req': req, }, context_instance=RequestContext(request)) return response
... from <проэкт>.<мидлввря> import RequestLogMw urlpatterns = patterns('', ... url(r'^requests/', RequestLogMw.process_response, name='logurl'),
class RequestsLogTemplateTest(TestCase): def setUp(self): self.client = Client() def tearDown(self): self.client = None def test_reqlog_page(self): response = self.client.get('/requests/') self.assertContains(response, 'At', count=2, status_code=200) _n = 15 while _n >= 0: _n -= 1 if _n == 0: break else: response = self.client.get('/requests/') self.assertContains(response, 'At', count=10, status_code=200)
Traceback (most recent call last): File "/home/animasola/Documents/coffeine/muchcoffee/../muchcoffee/coffeine/tests.py", line 52, in test_reqlog_page response = self.client.get('/requests/') File "/usr/local/lib/python2.7/dist-packages/django/test/client.py", line 445, in get response = super(Client, self).get(path, data=data, **extra) File "/usr/local/lib/python2.7/dist-packages/django/test/client.py", line 229, in get return self.request(**r) File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 111, in get_response response = callback(request, *callback_args, **callback_kwargs) TypeError: unbound method process_response() must be called with RequestLogMw instance as first argument (got WSGIRequest instance instead)
Офлайн
Трудно сказать что конкретно не правильно, спмотрите дебаггером.
Вы как-то очень странно используете middleware - как view, судя по urls.py. Почему так?
Офлайн
Судя по ошибке должно быть:
url(r'^requests/', RequestLogMw().process_response, name='logurl'),
Офлайн
FerromanПравильный вопрос дорогого стоит. Спасибо.
Трудно сказать что конкретно не правильно, спмотрите дебаггером.
Вы как-то очень странно используете middleware - как view, судя по urls.py. Почему так?
Офлайн