У меня есть блог django, над которым я работаю, и у меня есть первая часть блога, в которой в блоге отображаются различные записи из базы данных. Однако, когда я нажимаю на конкретный пост в блоге, он не перенаправляет меня на подробный вид, он просто перенаправляет меня обратно в блог, где я могу видеть все записи в блоге:Блог Django, не связанный с подробным просмотром
Нажав на это в blog.html Я хочу, чтобы связать с конкретной должности в post.html
<h2><a href="{% url 'entry_detail' slug=object.slug %}">{{ object.title }}</a></h2>
urls.py из django.conf.urls импорта шаблонов, URL с. просмотров импорта, накорми
urlpatterns = patterns(
'',
url(r'^feed/$', feed.LatestPosts(), name="feed"),
url(r'^', views.BlogIndex.as_view(), name="blog"),
url(r'^entry/(?P<slug>\S+)$', views.BlogDetail.as_view(), name="entry_detail"),
)
models.py
from django.db import models
from django.core.urlresolvers import reverse
class Tag(models.Model):
slug = models.SlugField(max_length=200, unique=True)
def __str__(self):
return self.slug
class EntryQuerySet(models.QuerySet):
def published(self):
return self.filter(publish=True)
class Entry(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=200, null=True)
body = models.TextField()
slug = models.SlugField(max_length=200, unique=True)
publish = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
tags = models.ManyToManyField(Tag)
SHIRT_SIZES = (
('S', 'Small'),
('M', 'Medium'),
('L', 'Large'),
)
shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES, null=True, blank=True)
objects = EntryQuerySet.as_manager()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("entry_detail", kwargs={"slug": self.slug})
class Meta:
verbose_name = "Blog Entry"
verbose_name_plural = "Blog Entries"
ordering = ["-created"]
views.py
from django.views import generic
from . import models
class BlogIndex(generic.ListView):
queryset = models.Entry.objects.published()
template_name = "blog.html"
paginate_by = 3
class BlogDetail(generic.DetailView):
model = models.Entry
template_name = "post.html"
blog.html
{% include 'head.html' %}
{% include 'navbar.html' %}
<div class="container">
{% load django_markdown %}
<br>
<br>
{% for object in object_list %}
<div class="post">
<h2><a href="{% url 'entry_detail' slug=object.slug %}">{{ object.title }}</a></h2>
<p class="meta"></p>
<p class="meta">
{{ object.created }} |
Tagged under {{ object.tags.all|join:", " }}
</p>
{{ object.body|markdown }}
</div>
{% endfor %}
<hr class="featurette-divider">
{% if is_paginated %}
<ul class="pager">
<li {% if not page_obj.has_previous %}class="disabled"{% endif %}><a {% if page_obj.has_previous %}href="?page={{ page_obj.previous_page_number }}"{% endif %}>Prev</a></li>
<li {% if not page_obj.has_next %}class="disabled"{% endif %}><a {% if page_obj.has_next %}href="?page={{ page_obj.next_page_number }}"{% endif %}>Next</a></li>
</ul>
{% endif %}
</div>
{% include 'footer.html' %}
post.html
{% load django_markdown %}
{% for object in object_list %}
<div class="post">
<h2><a href="{% url "entry_detail" slug=object.slug %}">{{ object.title }}</a></h2>
<p class="meta">
{{ object.created }} |
Tagged under {{ object.tags.all|join:", " }} <p> Created by
{{ object.author }} </p>
</p>
{{ object.body|markdown }}
</div>
У меня также есть еще один url.py, который указывает URL-адрес блога на все URL-адреса в приложении для блога. Не знаю, если это помогает:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^$', 'website.views.home', name='home'),
url(r'^about/', 'website.views.about', name='about'),
url(r'^contact/', 'contact.views.contact', name='contact'),
url(r'^markdown/', include("django_markdown.urls")),
url(r'^blog/', include('blog.urls')),
]
Что выводит этот тег шаблона URL-адреса при проверке источника? – rnevius
он выводит слизню. My Second Post – Jimmyn
Это может быть случай шаблона, который неожиданно переопределяет другой шаблон. Я всегда стараюсь упорядочить мои шаблоны из * most *, специфичных для * наименее * конкретных (от самого длинного до кратчайшего). – Brandon