我一直在Django中設置views/url幾天努力。掙扎着讓我的頭腦看起來每個人似乎都略有不同。異常值:博客()需要2個參數(1給出)
我想要實現的是:
我想有一個博客,我可以將位於例如在網站上發佈新聞的帖子 - mysite.com/blog/那麼你可以通過點擊來查看這些帖子單獨地從每個帖子中拉出slu through。 (這非常有效)。
但是我想拉博客應用程序的帖子,所以主頁。所以你可以查看最新帖子的片段。我現在明白我需要在app文件夾和主目錄之外創建一個視圖和一個URL。然而我努力讓他們連接在一起。我目前收到上面顯示的錯誤信息。 '沒有博客與給定的查詢匹配。'這是我的URL,模型和2個不同的視圖文件夾的代碼。
//URLS for app and main directory
import authority
from django.conf import settings
from django.conf.urls import patterns, include, url
from django.conf.urls.defaults import url, include, patterns
from django.contrib import admin
admin.autodiscover()
authority.autodiscover()
urlpatterns = patterns('',
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^authority/', include('authority.urls')),
(r'^i18n/', include('django.conf.urls.i18n')),
(r'^admin/', include(admin.site.urls)),
url(r'^$', 'views.blog', name='index'),
url(r'^blog/(?P<slug>[-\w]+)/$', 'blog.views.blog', name="blog"),
url(r'^blog/$', 'blog.views.blog_index', name="blog_index"),
)
if settings.DEBUG:
urlpatterns += patterns('',
# Trick for Django to support static files (security hole: only for Dev environement! remove this on Prod!!!)
url(r'^admin/pages/page(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.PAGES_MEDIA_ROOT}),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
url(r'^admin_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.ADMIN_MEDIA_ROOT}),
)
urlpatterns += patterns('',
(r'^', include('pages.urls')),
)
//主視圖到主頁
from django.http import HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from blog.models import Blog, NewsPost
def blog_index(request):
blogs = Blog.objects.filter(active=True)
return render_to_response('index.html', {
'blogs':blogs,
}, context_instance=RequestContext(request))
//視圖對於博客APP
from django.http import HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from blog.models import Blog, NewsPost
def blog_index(request):
blogs = Blog.objects.filter(active=True)
return render_to_response('blog/index.html', {
'blogs':blogs,
}, context_instance=RequestContext(request))
def blog(request, slug):
blog = get_object_or_404(Blog, active=True, slug=slug)
return render_to_response('blog/blog_post.html', {
'blog': blog
}, context_instance=RequestContext(request))
//模型從博客APP
from django.contrib.auth.models import User
class TimeStampedActivate(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=False, help_text="Controls
whether or now this news post is live")
class Meta:
abstract = True
class Blog(TimeStampedActivate):
title = models.CharField(max_length=255, help_text="Can be
anything up to 255 character")
slug = models.SlugField()
description = models.TextField(blank=True, help_text="Give a short
description of the news post")
content = models.TextField(blank=True, help_text="This is the main
content for the news post")
user = models.ForeignKey(User, related_name="blog")
def __unicode__(self):
return self.title
@models.permalink
def get_absolute_url(self):
return ('blog',(), {
'slug': self.slug
})
class NewsPost(TimeStampedActivate):
title = models.CharField(max_length=255, help_text="title of the post")
slug = models.SlugField()
description = models.TextField(blank=True, help_text="Give a short
description of the news post")
content = models.TextField(blank=True, help_text="This is the main
content for the news post")
publish_at = models.DateTimeField(default=datetime.datetime.now(),
help_text="Choose when the post is visible")
blog = models.ForeignKey(Blog, related_name="posts")
def __unicode__(self):
return self.title
class Meta:
ordering = ['-publish_at', '-modified', '-created']
如果您需要更多的信息隨時問!我對這一切都很陌生,所以很容易! :) 提前致謝!
聽起來像你'blogpost'視圖應該僅僅是與您的'blog_index'一個,肯定?你似乎想要更多或更少的相同的東西 - 博客文章的列表。有什麼不同? –
嗨丹尼爾 - 好吧,我已經複製並粘貼,並從博客應用程序的視圖更改URL導入模型的名稱。我沒有收到此錯誤消息 - 無法導入名稱博客 – JDavies
對不起,什麼?「改變了URL導入模型的名稱」 - 這是什麼意思?如果您更改了某些代碼,請更新上面的帖子,並顯示實際的錯誤消息。 –