2014-01-25 6 views
0

У меня есть структура URL, который включает в формате год/месяц/день/SlugДжанго обратный поиск

Пример: 2014/Jan/25/Another_blog/

В моей модели у меня есть функция get_absolute_url


def get_absolute_url(self): 
    # Format date to yyyy/mon/dd format 
    datestr = format_date(self.publication_date,'%Y/%b/%d') 
    slugstr = datestr + '/' + self.machine_name 
    return (str(slugstr)) 

вступление URL является


url(r'^(?P\d{4})/(?P[-\w]+)/(?P\d{1,2})/(?P[a-zA-Z0-9_-]+)/$', 
     PostDetails.as_view(), name='postdetails'), 

на мой взгляд, я возвращаюсь к записи Wi го помощника


# Helper 
def get_post(self, slug): 
    return Post.objects.get(machine_name=slug) 

При использовании этого в шаблоне с помощью {{}} post.get_absolute_url работает хорошо

Что я пытаюсь сделать, это получить рабочее испытание с использованием реверса()


def test_post_detail_view(self): 
    a = self.create_post() 
    url = reverse('postdetails') 
    resp = self.client.get(url) 
    self.assertEqual(resp.status_code, 200) 

Я попытался:

URL = обратная ('postdetails', арг = [a.machine_name])

url = reverse ('postdetails', kwargs = {'slug': a.machine_name})

Но знайте, что я не получаю обратную логику вправо.

Выход теста:

" '% S' аргументы не найдены." % (lookup_view_s, Args, kwargs)) NoReverseMatch: Обратный для 'postdetails' с аргументами

Любые советы или указатели будут оценены ..

ответ

1

Вы должны дать все четыре арг, например,

reverse("postdetails", args=('2014', 'Jan', '25', a.machine_name)) 
+0

Спасибо за решение. Работала отлично. – campervancoder

Смежные вопросы