我正在使用Django 1.5.1,现在我有一个网页显示了多个来自我的数据库的条目,但现在我想为它自己的每个条目都有一个页面。所以基本上当用户点击标题时,它会将它们带到单独的页面,只显示他们点击的条目。每个特定条目都有一个页面 - Django
我收到以下错误:
NameError at/
name 'Post' is not defined
下面是我的,我认为是有关解决这一问题的每个页面的代码。我还创建了一个post.html页面,这样就不会出现我的错误,views.py和urls.py存储在Django的默认目录中,我的post.html和index.html存储在/ mysite/mysite /模板/博客/
的index.html
{% extends 'base.html' %}
{% block title %} Roadcase WebApp {% endblock %}
{% block content %}
<h1>Roadcase WebApp</h1>
<p>Today's Date: {% now "F j, Y" %}</p>
<div class="post">
<table class="main">
<tr class="title_head">
<td><a href="">ID</a></td>
<td><a href="">Roadcase</a></td>
<td><a href="">User</a></td>
<td><a href="">Location</a></td>
<td><a href="">Date Taken</a></td>
<td><a href="">Return Date</a></td>
<td><a href="">Returned</a></td>
</tr>
{% for post in posts %}
<tr>
<td><a class="n_link" href="/blog/{{post.id}} ">{{post.id}}</a></td>
<td>{{post.Roadcase_Number}}</td>
<td>{{post.First_Name}} {{post.Last_Name}}</td>
<td>{{post.Where_Did_It_Go}}</td>
<td>{{post.Date_Taken|date}}</td>
<td>{{post.Date_Returned|date}}</td>
<td>{% if post.Returned == True %}
Yes
{% else %}
No
{% endif %}</td>
</tr>
{% endfor %}
</table>
</div>
{% endblock %}
views.py
from django.shortcuts import render, get_object_or_404
from blog.models import Post
#def index(request):
# get the blog posts that are published
# posts = Post.objects.filter(published=True)
# # Order the content by descending id, (3 2 1)
# posts = Post.objects.order_by('-id')
# now return the rendered template
# return render(request,'blog/index.html', {'posts': posts})
#def post(request, slug):
# get the Post object
# post = get_object_or_404(Post, slug=slug)
# now return the rendered template
# return render(request, 'blog/post.html', {'post': post})
class Index(ListView):
model = Post
template_name = 'blog/index.html'
def get_queryset(self):
return super(Index, self).get_queryset().filter(published=True).order_by('-id')
def PostDetailView(DetailView):
model = Post
template_name = 'blog/post.html'
urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.views.generic import DetailView
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^$','blog.views.index'),
url(r'^(?P<slug>[\w\-]+)/$','blog.views.post'),
url(r'^(?P<pk>\d+)$', DetailView.as_view(
model=Post,
template_name="post.html")),
)
post.html
{% extends 'base.html' %}
{% block title %} Roadcase WebApp {% endblock %}
{% block content %}
<h1>Roadcase WebApp</h1>
<p>Today's Date: {% now "F j, Y" %}</p>
<div class="post">
<table class="main">
<tr class="title_head">
<td><a href="">ID</a></td>
<td><a href="">Roadcase</a></td>
<td><a href="">User</a></td>
<td><a href="">Location</a></td>
<td><a href="">Date Taken</a></td>
<td><a href="">Return Date</a></td>
<td><a href="">Returned</a></td>
</tr>
<tr>
<td><a class="n_link" href="/blog/{{post.id}} ">{{post.id}}</a></td>
<td>{{post.Roadcase_Number}}</td>
<td>{{post.First_Name}} {{post.Last_Name}}</td>
<td>{{post.Where_Did_It_Go}}</td>
<td>{{post.Date_Taken|date}}</td>
<td>{{post.Date_Returned|date}}</td>
<td>{% if post.Returned == True %}
Yes
{% else %}
No
{% endif %}</td>
</tr>
</table>
</div>
{% endblock %}
感谢这个技巧,但是我现在只是得到一个404错误,当我尝试去具体页面。例如,试图访问这个页面“http://127.0.0.1:8000/blog/1”给我错误,说它无法找到。有任何想法吗? – Kidex94
尝试更改网址(r'^(?P \ d +)$'to url(r'^ blog /(?P \ d +)$' –
arturex
因此,我尝试了这一步,现在我得到TemplateDoesNot存在/ blog/1 – Kidex94