2016-11-02 6 views
-1

Im пытается создать страницы для тегов на моем блоге django. У меня уже есть простая индексная страница, которая отображает список всех используемых тегов, теперь я хочу иметь отдельные страницы для каждого тега, и на этой странице я покажу все сообщения, помеченные этим тегом. Структура URL для этих тегов страниц деталей будет как этотПодробная информация о теге с Django-taggit

LOCALHOST/тег/мой тег-вот

Я уже установлен Джанго-taggit и добавлен некоторые теги и я их отображение штрафа на почтовых страницах деталей и указанную выше индексную страницу тега, но Im получает 404, когда я пытаюсь посетить каждую страницу подробных тегов, такую ​​как/tag/test.

Это мои файлы и полное сообщение об ошибке ниже.

views.py

def tag_detail(request, tag): 


    tag = get_object_or_404(Tag, tag=tag.name) 


    return render(request, 'blog/tags_detail.html', {'tag': tag}) 

urls.py (приложение)

urlpatterns = [ 

    url(r'^$', views.blog_index, name='blog_index'), 
    url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\ 
     r'(?P<post>[-\w]+)/$', 
     views.blog_post_detail, 
     name='blog_post_detail'), 
    url(r'^contact/$', views.contact_form, name='contact_form'), 
    url(r'^thanks/$', views.thanks_view, name='thanks_view'), 
    url(r'^about/$', views.about, name='about'), 
    url(r'^upload/$', views.upload_image, name='upload_image'), 
    url(r'^tag/(?P<tag>[-/w]+)/$', views.tag_detail, name='tag_detail'), 
    url(r'^tags/$', views.tags_index, name='tags_index') 

] 

и это полное сообщение об ошибке

Page not found (404) 
Request Method: GET 
Request URL: http://127.0.0.1:8000/tag/test 

проблема здесь, на мой взгляд или структура url? Для представления я не уверен на 100%, если это правильный способ сделать это, но Ive попытался сделать это так же, как и мое подробное представление по почте.

спасибо

+1

Что делать, если 'tag.name' для' get_object_or_404' возвращает '404'? –

+0

У меня есть тег, называемый «test» в admin, хотя этот тег был добавлен в некоторые сообщения, и он отображается ниже этих сообщений просто отлично, я также использовал «tag.name» на моей странице tags_index, которая отображает все теги и никаких проблем с этим. –

ответ

1

Проблема в вашем файле views.py. В этом коде:

def tag_detail(request, tag): 

    tag = get_object_or_404(Tag, tag=tag.name) 

    return render(request, 'blog/tags_detail.html', {'tag': tag}) 

Здесь Вы писали:

tag = get_object_or_404(Tag, tag=tag.name) 

вы прошли тег в URL, так правильный метод будет:

tag = get_object_or_404(Tag, tag=tag) 

Но это будет работать только в том случае, в ваша модель, вы вернули название тега как Unicode, например:

class Tag(models.Model): 
     name = models.CharField() 

    def __unicode__(self): 
     return unicode(self.name) 

И если это все еще не работает, может возникнуть проблема в настройке TEPLATE_DIR в файле settings.py. Затем вам необходимо предоставить файл settings.py для структуры файла проекта.

+1

спасибо, это было –