news/models.py:
from places.models import Place class News(models.Model): place=models.ForeignKey(Place) title=models.CharField(max_length=50) short_text=models.TextField() full_text=models.TextField()
places/models.py:
class PlaceCategory(models.Model): category=models.CharField(max_length=50) class Place(models.Model): category=models.ForeignKey(PlaceCategory) name=models.CharField(max_length=50)
places/views.py:
from places.models import Place, PlaceCategory from news.models import News from django.http import HttpResponse from django.template import Context, Template def all_categories_view(request): t=Template(''' {% for category in categories %} <a href="{% url places.views.place_of_category category.category %}">{{ category.category }}</a><hr> {% endfor %} ''') categories=PlaceCategory.objects.all() c=Context({'categories':categories}) return HttpResponse(t.render(c)) def place_of_category(request, category_name): t=Template(''' {% for place in places %} <a href="{% url places.views.news_of_place place.name %}">{{ place.name }}</a> {% endfor %} ''') places=Place.objects.filter(category__category=category_name) c=Context({'places':places}) return HttpResponse(t.render(c)) def news_of_place(request, place_name): t=Template(''' {% for new in news %} <h3>{{ new.title }}</h3> {% endfor %} ''') news=News.objects.filter(place__name=place_name) c=Context({'news':news}) return HttpResponse(t.render(c))
urls.py:
urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), url(r'^$', all_categories_view, name='zzz_view'), url(r'^(?P<category_name>\w+)/$', place_of_category, name='xxx_view'), url(r'^(?P<category_name>\w+)/(?P<place_name>\w+)/$', news_of_place, name='ccc_view'), )
Главная страница показывает мне категории мест корректно. На каждую из этих категорий назначается ссылка тэгом {% url %}. Нажимаю на ссылку , он выдает ошибку:
Request Method: GET
Request URL: http://127.0.0.1:8000/%D0%91%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%BD%D1%8B%D0%B5/
Django Version: 1.4
Exception Type: NoReverseMatch
Exception Value: Reverse for ‘places.views.news_of_place’ with arguments ‘(’', u'\u0411\u043e\u043b\u044c\u043d\u0438\u0446\u0430 1')' and keyword arguments ‘{}’ not found.
без тэга {% url %} ссылка переходит на след страничку и отображает места корректно.
Кода много, надеюсь проблема понятна.