Ответ 1
Вы использовали пространство имен при включении URL-адресов, поэтому вам, вероятно, придется использовать "blog:postdetail"
для его изменения.
Я просмотрел много разных сообщений, но они все либо работают с другой версией django, либо, похоже, не работают. Вот что я пытаюсь сделать:
urls.py(для всего проекта):
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^blog/', include('blog.urls', namespace="blog")),
url(r'^admin/', include(admin.site.urls)),
)
urls.py(специально для приложения):
urlpatterns = patterns ('' ,
url(r'^$', views.index, name='index'),
url(r'^(?P<slug>[\w\-]+)/$', views.posts, name="postdetail"),
)
views.py:
def index(request):
posts = Post.objects.filter(published=True)
return render(request,'blog/index.html',{'posts':posts})
def posts(request, slug):
post = get_object_or_404(Post,slug=slug)
return render(request, 'blog/post.html',{'post':post})
И, наконец, шаблон:
{% block title %} Blog Archive {% endblock %}
{% block content %}
<h1> My Blog Archive </h1>
{% for post in posts %}
<div class="post">
<h2>
<a href="{% url "postdetail" slug=post.slug %}">
{{post.title}}
</a>
</h2>
<p>{{post.description}}</p>
<p>
Posted on
<time datetime="{{post.created|date:"c"}}">
{{post.created|date}}
</time>
</p>
</div>
{% endfor %}
{% endblock %}
По какой-то причине это дает мне "No reverse Match": Reverse для "postdetail" с аргументами "()" и аргументами ключевых слов "{u'slug ': u'third'} 'не найден. 0 образцов (ы): []
Я уже пытался избавиться от двойных кавычек вокруг postdetail
в шаблоне, и я также попытался ссылаться на него по имени вида вместо имени шаблона. Еще не повезло. Документация также не слишком полезна.
Помощь действительно оценена! Благодаря
Вы использовали пространство имен при включении URL-адресов, поэтому вам, вероятно, придется использовать "blog:postdetail"
для его изменения.